本文共 877 字,大约阅读时间需要 2 分钟。
K均值聚类容易实现,但是可能收敛到局部最小值,影响K-means效果的因素:
优:只需要计算数据点与聚类中心的距离,其计算复杂度只有O(n)。
缺:十分依赖于初始给定的聚类数目;同时随机初始化可能会生成不同的聚类效果,所以它缺乏重复性和连续性。
伪代码:
创建k个点作为起始质心(通常是随机选择)当任意一个点的簇分配结果发生改变时: 对数据集中的每个数据点: 对每个质心: 计算质心与数据点之间的距离 将数据点分配到距其最近的簇 对每一个簇,计算簇中所有店的均值并将均值作为质心
为克服K-means收敛于局部最小值的问题,有人提出了二分K-均值算法(bisecting K-means)。
伪代码:
将所有点看成一个簇当簇的数目小于K时对于每个簇: 计算总误差 在给定的簇上面进行K-均值聚类(K=2) 计算将该簇一分为二之后的总误差选择使得误差最小的那个簇进行划分操作
在Scikit-learn中也实现了2种K-means:
应用:
周志华 《机器学习》 9.4 P202
《Building Machine Learning Systems with Python》 P46
《Machine Learning in Action》
转载地址:http://cioji.baihongyu.com/