KMeans算法是一种基于样本间相似度量的间接聚类方法。
主要思想是:在给定K值和K个初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的步骤,直至类簇中心点的变化很小,或者达到指定的迭代次数。
KMeans的两个缺陷:
1,这两个缺陷都跟初始值相关。K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。
2,K-Means算法需要用初始随机种子点来搞,这个随机种子点太重要,不同的随机种子点会有得到完全不同的结果。
对于缺陷1:
ISODATA算法通过类的自动合并和分裂,得到较为合理的类型数目 K。
对与缺陷2:可以采用K-Means++算法进行解决:
具体内容参:http://rosettacode.org/wiki/K-means%2B%2B_clustering#Python