K-Means算法的思想:
第一步:寻找最近的中心点
在给定的数据集上随机选取K(K已知)个点(向量)作为数据集上的K个中心(也就代表K个类别),然后依次遍历每一条数据,分别计算其与K个中心的距离,选择与之距离最近的点作为该数据所属的类别。这样一次遍历完之后,数据集中的所有点都被划入了其应该所属的类别里面(尽管有划错的)。
注意:初始中心点的选择,会影响到最终的分类结果,即可能不会收敛
第二步:重新计算中心
对于每一个类别来说,里面都有若干个点。由于之前的中心点事随机选取的,所以可定有不合理的中心点,于是我们就要重新计算中心点。然后再重复进行第一步的操作。
经过多次迭代前面两个步骤之后,最终的总代价将会收敛到一个最小值。此时的得到的聚类结果通常也就是最好的。
详细步骤:现有如下数据集,欲将其分为3类,即K=3:
1.寻找最近的中心点
先随机取3个点 μ 1 , μ 2 , μ 3 \mu_1,\mu_2,\mu_3 μ1,μ2,μ3作为中心点,然后分别计算每个点到 μ 1 , μ 2 , μ 3 \mu_1,\mu_2,\mu_3 μ1,μ2,μ3的距离的平方(平方在计算的时候好处理,不含根号),选择最小的。其中, μ \mu μ为一个 K × n K\times n K