k-means算法。它不仅是最简单的聚类算法,也是最普及且最常用的。k-means算法是一种基于形心的划分数据的方法。我们给定一个数据集DD,以及要划分的簇数kk,就能通过该算法将数据集划分为kk个簇。一般来说,每个数据项只能属于其中一个簇。具体方法可以这样描述:
假设数据集在一个mm维的欧式空间中,我们初始时,可随机选择kk个数据项作为这kk个簇的形心Ci,i∈{1,2,…k}Ci,i∈{1,2,…k},每个簇心代表的其实是一个簇,也就是一组数据项构成的集合。然后对所有的nn个数据项,计算这些数据项与CiCi的距离(一般情况下,在欧式空间中,数据项之间的距离用欧式距离表示)。比如对于数据项Dj,j∈{1,…n}Dj,j∈{1,…n},它与其中的一个簇心CiCi最近,则将DjDj归类为簇CiCi.
通过上面这一步,我们就初步将DD划分为kk个类了。现在重新计算这kk个类的形心。方法是计算类中所有数据项的各个维度的均值。这样,构成一个新的形心,并且更新这个类的形心。每个类都这样计算一次,更新形心。
对上一步计算得到的新的形心,重复进行第(1),(2)步的工作,直到各个类的形心不再变化为止。
1