随机选择K个聚类中心,在每一次迭代中,先为每个点确定其最近的聚类中心,这一步称为集群分配(cluster assignment),然后计算每个类中所有点的中心点,将该类的聚类中心移动到中心点,这一步称为中心移动(move centroid),得到这k个聚类中心的新位置,进行下一次迭代,直到每个聚类中心点正确分布在每个类的中心。
算法的输入有两个参数:聚类中心的数量K和一系列训练集X={x1,x2,…,xm},聚类过程如图所示:
伪代码如下:
一个推荐的随机初始化的方法:
对于K比较小(2到10),进行多次随机初始化可能会很有用,但是对于K很大(如100),也许一次K聚类就能达到较好的效果。