K-means算法是最简单的一种聚类算法。算法的目的是使各个样本与所在类均值的误差平方和达到最小(这也是评价K-means算法最后聚类效果的评价标准)
K-means聚类算法的一般步骤:
初始化。输入基因表达矩阵作为对象集X,输入指定聚类类数N,并在X中随机选取N个对象作为初始聚类中心。设定迭代中止条件,比如最大循环次数或者聚类中心收敛误差容限。
进行迭代。根据相似度准则将数据对象分配到最接近的聚类中心,从而形成一类。初始化隶属度矩阵。
更新聚类中心。然后以每一类的平均向量作为新的聚类中心,重新分配数据对象。
反复执行第二步和第三步直至满足中止条件。
K-均值聚类法的概述
之前在参加数学建模的过程中用到过这种聚类方法,但是当时只是简单知道了在matlab中如何调用工具箱进行聚类,并不是特别清楚它的原理。最近因为在学模式识别,又重新接触了这种聚类算法,所以便仔细地研究了一下它的原理。弄懂了之后就自己手工用matlab编程实现了,最后的结果还不错,嘿嘿~~~
简单来说,K-均值聚类就是在给定了一组样本(x1, x2, 。。.xn) (xi, i = 1, 2, 。。。 n均是向量) 之后,假设要将其聚为 m(《n) 类,可以按照如下的步骤实现:
Step 1: 从 (x1, x2, 。。.xn) 中随机选择 m 个向量(y1,y2,。。.ym) 作为初始的聚类中心(可以随意指定,不在n个向量中选择也可以);
Step 2: 计算 (x1, x2, 。。.xn) 到这 m 个聚类中心的距离(严格来说为 2阶