importnumpy as npimportmatplotlib.pyplot as plt#子函数:Initialize center函数通过使用numpy库的zeros函数和random.uniform函数,#随机选取了k个数据做聚类中心, 并将结果存放在Numpy的Array对象centers中
definitCenters(dataSet,k):
numSamples,dim=dataSet.shape
centers=np.zeros((k,dim))for i inrange(k):
index=int(np.random.uniform(0,numSamples)) #random get k centers
centers[i,:]=dataSet[index,:]print(centers)returncenters#子函数:Dist2Centers这个函数用来计算一个数据点到所有聚类中心的距离,将其存放在dis2cents中返回
defDist2Centers(sample,centers):
k=centers.shape[0]
dis2cents=np.zeros(k)for i inrange(k):
dis2cents[i]=np.sqrt(np.sum(np.power(sample-centers[i,:],2)))returndis2cents#子函数:kmeans函数.# 这部分代码完成了kmeans算法中为数据点决定所属类别以及迭代更新类中心点的主要功能。# 注意numpy库的返回最小值索引的argmin函数以及计算平均值的mean函数的使用方法
defkmeans(dataSet,k,iterNum):
numSamples=dataSet.shape[0]
iterCount=0#cl