K-MEANS的python实现
K均值是一种很常见的无监督机器学习方法了,在PYTHON中也有很多包可以调用,我们主要是用他来锻炼一下PYTHON的语法,在这里我们的默认输入是多维数组ndarray
代码如下所示
#KNN
#一行是一个样本
import pandas as pd
import numpy as np
import random
#计算聚簇中心
def reCent(inpudata):
mu=np.mean(inpudata, axis=0) # axis=0,计算每一列的均值
return mu
#计算距离
def distance(x,y):
distance=np.dot(x,y.T)
return distance
def knn(inputdata,k):
#随机选择聚簇中心
cxin=[]
y=[]
n=random.sample(range(len(inputdata)), k)
for i in n:
cxin.append(inputdata[i])
cxin=np.array(cxin)
#计算距离
n=0
for x in inputdata:
d=[distance(x,j) for j in cxin]
y.append(d.index(min(d)))
n+=1
for jb in range(n):
if y[jb]==y[-1]:
test=np.array([inputdata[jb],cxin[y[-1]]]) #更换
cxin[y[-1]]=reCent(test)