k-means算法
聚类分析是数据分析中,非常重要的一类课题。他的作用是将大量的无标签数据通过计算,自动为其标注标签。众所周知,这一点是区别于数据分类技术的。而现实的场景中,无标签的数据显然多于有标签数据,因此,我在这里也是先说聚类,后面的博文,再说分类。
聚类的目的,是要将数据归为不同的类,基本原则是要相近的数据尽量归为一类,而不同类之间的数据则要尽量有比较大的差别。
说到聚类,当然最先想到的就是k-means算法。它不仅是最简单的聚类算法,也是最普及且最常用的。k-means算法是一种基于形心的划分数据的方法。我们给定一个数据集 D ,以及要划分的簇数
- 假设数据集在一个
m 维的欧式空间中,我们初始时,可随机选择 k 个数据项作为这k 个簇的形心 Ci,i∈{ 1,2,…k} ,每个簇心代表的其实是一个簇,也就是一组数据项构成的集合。然后对所有的 n 个数据项,计算这些数据项与Ci 的距离(一般情况下,在欧式空间中,数据项之间的距离用欧式距离表示)。比如对于数据项 Dj,j∈{ 1,…n} ,它与其中的一个簇心