k-means 算法流程如下:
- 随机选取 k 个 中心点: c 1 , c 2 , … … c k c_1,c_2, ……c_k c1,c2,……ck;
- 对每一个样本,计算与每个中心点之间的距离,取最小的作为它的归类;
- 重新计算每个类的中心点
- 如果每个中心点变化很小,则算法收敛,退出;否则迭代1-3
优点:可以快速收敛
缺点:
- 只适用于连续的 n 维空间 (因为要求均值)
- 需要定义 k
- 对噪点敏感(一个异常点可能会改变簇的分布,而这个分布并不是我们想要的,见下图)
- 会陷入局部最优(为什么请看这里为什么k-mean不能达到全局最优)

- 该方法不适于发现非凸面形状的簇(使用距离度量,生成球状簇)
- 簇的大小应该接近 (因为距离度量)<