输入:

- 簇的个数k

- 包含n个样本的数据集

输出:

- 各样本所属的k个簇

算法步骤:

1. 随机选择k个样本作为初始簇中心

2. 循环:

1. 将非中心点数据根据与各簇中心的距离划分到最近的簇中

2. 在非中心点中随机选择一个样本

3. 计算使用该样本代替原簇中心形成新簇的代价

4. 如果新簇代价更低,则更新簇中心为该样本

重复步骤2直到满足终止条件(如簇中心稳定)