您现在的位置是:课程教程文章

Python K-means算法的计算步骤

2023-12-14 20:43课程教程文章 人已围观

步骤说明

1、确定K值。

决定数据聚为几类,K值是K-Means算法中唯一的参数。

2、从原始数据集中随机选择K个点作为初始均值点。

3、依次从原始数据集中取出数据。

每取出一个数据就和K个均值点分别计算距离(默认计算点间的欧氏距离),和谁更近就归为这个均值点所在的簇;

4、分别计算各簇当前的均值点。

即求该簇中所有点的平均值

5、比较当前的均值点和上一步得到的均值点是否相同。

如果相同,则K-Means算法结束,否则,将当前的均值点替换掉之前的均值点,然后重新划分族,重复步骤三。

实例

importnumpyasnp
importmatplotlib.pyplotasplt

'''标志位统计递归运行次数'''
flag=0

'''欧式距离'''
defecludDist(x,y):
returnnp.sqrt(sum(np.square(np.array(x)-np.array(y))))

'''曼哈顿距离'''
defmanhattanDist(x,y):
returnnp.sum(np.abs(x-y))

'''夹角余弦'''
defcos(x,y):
returnnp.dot(x,y)/(np.linalg.norm(x)*np.linalg.norm(y))

'''计算簇的均值点'''
defclusterMean(dataset):
returnsum(np.array(dataset))/len(dataset)

'''生成随机均值点'''
defrandCenter(dataset,k):
temp=[]
whilelen(temp)<k:
index=np.random.randint(0,len(dataset)-1)
ifindexnotintemp:
temp.append(index)
returnnp.array([dataset[i]foriintemp])

'''以数据集的前k个点为均值点'''
deforderCenter(dataset,k):
returnnp.array([dataset[i]foriinrange(k)])

'''聚类'''
defkMeans(dataset,dist,center,k):
globalflag
#all_kinds用于存放中间计算结果
all_kinds=[]
for_inrange(k):
temp=[]
all_kinds.append(temp)
#计算每个点到各均值点的距离
foriindataset:
temp=[]
forjincenter:
temp.append(dist(i,j))
all_kinds[temp.index(min(temp))].append(i)
#打印中间结果
foriinrange(k):
print('第'+str(i)+'组:',all_kinds[i],end='\n')
flag+=1
print('************************迭代'+str(flag)+'次***************************')
#更新均值点
center_=np.array([clusterMean(i)foriinall_kinds])
if(center_==center).all():
print('结束')
foriinrange(k):
print('第'+str(i)+'组均值点:',center_[i],end='\n')
plt.scatter([j[0]forjinall_kinds[i]],[j[1]forjinall_kinds[i]],marker='*')
plt.grid()
plt.show()
else:
#递归调用kMeans函数
center=center_
kMeans(dataset,dist,center,k)

defmain(k):
'''生成随机点'''
x=[np.random.randint(0,50)for_inrange(50)]
y=[np.random.randint(0,50)for_inrange(50)]
points=[[i,j]fori,jinzip(x,y)]
plt.plot(x,y,'b.')
plt.show()
initial_center=randCenter(dataset=points,k=k)
kMeans(dataset=points,dist=ecludDist,center=initial_center,k=k)

if__name__=='__main__':
main(3)

以上就是Python K-means算法的计算步骤,希望对大家有所帮助。更多Python学习指路:python基础教程

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

课程教程:Python K-means算法的计算步骤

上一篇:Python默认值的使用注意

下一篇:没有了

站点信息

  • 文章统计篇文章