简单之美Kmeans

        先感受一下聚类的“美图”【还有更nice的】,这是用kmeans++【怎么使kmeans++,且下面娓娓道来】跑出来的效果,不过比wiki上的还是逊色了点。

        聚类分析【百度百科】:http://baike.baidu.com/link?url=Oa6VhEPTxAoKfFOBtvX7BHpOFusnpZ5oKGfFQb32Rs9NiWSKrQ51T7Vuy8ci3uNv

简单之美Kmeans

kmeans【随机产生初始簇心】跑出来是这样的【因为随机,可能每次跑都有出入】:

简单之美Kmeans

        scikit-learn【clustering】:http://scikit-learn.org/stable/modules/clustering.html#clustering

        1.一般kmeans算法首先会在训练集上随机初始化K个簇心,

        2.接下来就是大量的相似度(一般用欧式距离度量)计算,这样,第一次运算下来,训练集中的样本就有了初始的首领【簇心】。

        3.更新:这个簇心就要更新了。取它的小弟们(属于这个簇的样本)的重心。

        4.重复2.3过程,直至簇心不再有较大移动或在自己设定的容忍度范围内。

        是不是思想很简单,但是它能做的事情可是不少!!!(有兴趣的你可以慢慢钻研)

        5.敏锐的你会质疑:随机初始化的簇心,会不会不能反映数据集的大致分布。随机的不好,迭代的次数也会增多。是的。接下来就是kmeans++算法所提出的思想。

        6.kmeans的核心思想就是尽可能使所选的簇心之间相距较远。并且根据以距离为参数的概率来选取簇心。想深入了解的童鞋可以看看kmeans++的论文和相关博客。

        下面是kmeans++算法的步骤:

        简单之美Kmeans

       上截图来自博客:http://blog.csdn.net/abc123456789cbaabc/article/details/38518803

        kmeans++:【kmeans++论文】http://ilpubs.stanford.edu:8090/778/1/2006-13.pdf

                                  【wiki code】http://rosettacode.org/wiki/K-means%2B%2B_clustering

        7.当然聚类还有很多方法,目前有层次聚类,谱聚类,AP(Affinity Propagation)等等【术业有专攻】。


        图1与图2的代码在github主页可以下载:https://github.com/stone8oy/kmeans


       -------------------------------------- 扬帆远航,不为终点。-----------------------------------------

       ------stone8oy


你可能感兴趣的:(cluster,聚类,kmeans,kmeans++)