首页 > Python基础教程 >
-
K均值算法
概念
K-means中心思想:事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,接着,重新计算每个类的质心(即为类中心),重复这样的过程,直到质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。
二、特点:
常用距离
a.欧式距离
b.曼哈顿距离
三、算法流程
K-means是一个反复迭代的过程,算法分为四个步骤:
(x,k,y)
(1) 选取数据空间中的K个对象作为初始中心,每个对象代表一个聚类中心;
def initcenter(x, k): kc
(2) 对于样本中的数据对象,根据它们与这些聚类中心的欧氏距离,按距离最近的准则将它们分到距离它们最近的聚类中心(最相似)所对应的类;
def nearest(kc, x[i]): j
def xclassify(x, y, kc):y[i]=j
(3) 更新聚类中心:将每个类别中所有对象所对应的均值作为该类别的聚类中心,计算目标函数的值;
def kcmean(x, y, kc, k):
(4) 判断聚类中心和目标函数的值是否发生改变,若不变,则输出结果,若改变,则返回2)。
while flag:
y = xclassify(x, y, kc)
kc, flag = kcmean(x, y, kc, k)
四、实践
(1).扑克牌手动演练k均值聚类过程:>30张牌,3类
①本次模拟k均值用到的扑克牌,初始中心为(2,9,12)
②经过一轮计算(选出中心:3,8,12)
③一直算到最后
(2).*自主编写K-means算法 ,以鸢尾花花瓣长度数据做聚类,并用散点图显示。