K-means和ISODATA 算法 原理与实现

K-means算法

原理:
对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。
在这里插入图片描述
如果用数据表达式表示,假设簇划分为(C1,C2,…Ck),则我们的目标是最小化平方误差E:
在这里插入图片描述
其中μi是簇Ci的均值向量,有时也称为质心,表达式为:在这里插入图片描述
一般步骤:
1.初始化。输入基因表达矩阵作为对象集X,输入指定聚类类数N,并在X中随机选取N个对象作为初始聚类中心。设定迭代中止条件,比如最大循环次数或者聚类中心收敛误差容限。

2.进行迭代。根据相似度准则将数据对象分配到最接近的聚类中心,从而形成一类。初始化隶属度矩阵。

3.更新聚类中心。然后以每一类的平均向量作为新的聚类中心,重新分配数据对象。

4.反复执行第二步和第三步直至满足中止条件。

MATLAB函数中的Kmeans
使用方法:
Idx=Kmeans(X,K)
[Idx,C]=Kmeans(X,K)
[Idx,C,sumD]=Kmeans(X,K)
[Idx,C,sumD,D]=Kmeans(X,K)
[…]=Kmeans(…,’Param1’,Val1,’Param2’,Val2,…)

X: NP的数据矩阵,N为数据个数,P为单个数据维度
K: 表示将X划分为几类,为整数
Idx: N
1的向量,存储的是每个点的聚类标号
C: KP的矩阵,存储的是K个聚类质心位置
sumD: 1
K的和向量,存储的是类间所有点与该类质心点距离之和
D: N*K的矩阵,存储的是每个点与所有质心的距离

[…]=Kmeans(…,‘Param1’,Val1,‘Param2’,Val2,…)
这其中的参数Param1、Param2等,主要可以设置为如下:
1 . ‘Distance’(距离测度)
‘sqEuclidean’ 欧式距离(默认时,采用此距离方式)
‘cityblock’ 绝度误差和,又称:L1
‘cosine’ 针对向量
‘correlation’ 针对有时序关系的值
‘Hamming’ 只针对二进制数据

K-means和ISODATA 算法 原理与实现_第1张图片
K-means和ISODATA 算法 原理与实现_第2张图片

你可能感兴趣的:(机器学习)