K均值聚类容易实现,但是可能收敛到局部最小值,影响K-means效果的因素:
- K值的选择
- 初始化质心
- 距离度量
优:只需要计算数据点与聚类中心的距离,其计算复杂度只有O(n)。
缺:十分依赖于初始给定的聚类数目;同时随机初始化可能会生成不同的聚类效果,所以它缺乏重复性和连续性。
伪代码:
创建k个点作为起始质心(通常是随机选择)
当任意一个点的簇分配结果发生改变时:
对数据集中的每个数据点:
对每个质心:
计算质心与数据点之间的距离
将数据点分配到距其最近的簇
对每一个簇,计算簇中所有店的均值并将均值作为质心
为克服K-means收敛于局部最小值的问题,有人提出了二分K-均值算法(bisecting K-means)。
伪代码:
将所有点看成一个簇
当簇的数目小于K时
对于每个簇:
计算总误差
在给定的簇上面进行K-均值聚类(K=2)
计算将该簇一分为二之后的总误差
选择使得误差最小的那个簇进行划分操作
在Scikit-learn中也实现了2种K-means:
- cluster.KMeans([n_clusters, init, n_init, …]) K-Means clustering
433


&spm=1001.2101.3001.11974&articleId=81953583&d=1&t=3&u=e120158f52a249e59eedadc037a9941c)

被折叠的 条评论
为什么被折叠?



