K均值聚类

基本K均值聚类基本思路包含python实现代码。

首先选择K个初始质心(集合中所有点度量值的均值),K值为期望得到的簇的个数,大小自己定;将每个点指派到最近的质心,点与点之间的距离通过两点对应度量值差的绝对值进行度量,然后根据指派到簇的点,更新每个簇的质心,重复指派和更新,知道簇不再发生变化,或者满足终止条件。

伪代码如下:

随机创建K个点作为初始的质心点
当任意一个点的簇分配结果发生变化时
       对数据集中的每一个数据点
             对每一个质心
                 计算质心与数据点的距离
            将数据点分配到最近的簇
      对每一个簇,计算簇中所有点的均值,并将均值作为质心

由于初始质心的选取,会造成聚类的局部最优,并不是全局最优,因此聚类效果不理想,为了克服K均值算法收敛于局部最小值的问题,有了下面的算法。

二分K均值聚类基本思路

为了得到K个簇,首先将所有点的集合分裂成两个簇,然后从这些簇中选取一个继续分裂,迭代直到产生K个簇;二分K均值的关键是如何选取待分裂簇,选择策略主要有两种,一种选择包含矢量个数最多的簇进行分裂,二是选择具有最大SSE(误差平方和)的簇分裂。

伪代码如下:

将所有数据点看成一个簇
当簇数目小于K时
      对每一个簇
             计算总误差
             在给定的簇上面进行K均值聚类取K=2
             计算该簇一分为二的总误差
       选择使得误差最小的那个簇进行划分操作
posted @ 2017-07-11 16:39  三门曾经  阅读(261)  评论(0编辑  收藏  举报