k-means & isodata 聚类方法

k-means 方法和 isodata 方法应该是两种比较基本的聚类方法了。顾名思义, k-means 就是指定有 k 个类,然后通过初始中心迭代得到最后的 k 个中心。这个初始中心可以随便选也可以随机选,也可以只取前 k 个样本作为初始中心。聚类最后的结果与初始聚类中心的关系还是比较密切的,不同的初始中心可能会得到完全不同的结果。解决初始值问题的一种方法是 k-means++ 方法,这里就不再解释了,有兴趣的朋友可以参考本文最后的几个链接。

k-means 的一个缺点就是必须指定聚类的个数,这个有些时候并不太行得通。于是就要求最好这个类别的个数也可以改变,这就形成了 isodata 方法,通过设定一些类别分裂和合并的条件,在聚类的过程中自动增减类别的数目。当然这也带来了一个问题,就是这个条件有时候并不那么好给出。当然 isodata 在很多情况下还是可以得到比较靠谱的结果。

下面的图是这两种聚类方法的对比:

本文为原创,转载文章或图片请注明,本文地址:http://blog.csdn.net/houston11235/article/details/8511379

K-Means

k-means & isodata 聚类方法_第1张图片

ISODATA

k-means & isodata 聚类方法_第2张图片


通过上面两张图还是能看出一些区别的,我个人的感受就是初始的聚类中心如果靠近整个数据集的中心的话,结果可能会好一些。还有就是这种聚类受初始中心影响比较大,要想得到稳定的结果最好还是多运行几次,把每次都在一个类别里面的数据归为一个类。


参考链接:

1、K-Means算法

2、K-Means++

3、K-Means Wiki

4、K-Means Matlab code

5、ISODATA Matlab code

6、Another ISODATA's Matlab implementation, can hold N dimensional data


你可能感兴趣的:(k-means & isodata 聚类方法)