2018.9.11
k-mean算法
- 解决什么问题
- 输入是什么
- 输出是什么
1. 解决什么问题:
k-means 算法接受输入量 k ;然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。
说白了就是把数据按需求分成 k 类。
2. 输入:
待处理数据矩阵X,质心数量K
算法思想:
(1)随机选取K个初始质心
(2)分别计算所有样本到这K个质心的距离
(3)如果样本离质心Si最近,那么这个样本属于Si点群;如果到多个质心的距离相等,则可划分到任意组中
(4)按距离对所有样本分完组之后,计算每个组的均值(最简单的方法就是求样本每个维度的平均值),作为新的质心
(5)重复(2)(3)(4)直到新的质心和原质心相等,算法结束
MATLAB中有自带的kmeans函数,可以直接使用:
K-means聚类算法采用的是将N*P的矩阵X划分为K个类,使得类内对象之间的距离最大,而类之间的距离最小。
使用方法:
Idx=Kmeans(X,K)
[Idx,C]=Kmeans(X,K)
[Idc,C,sumD]=Kmeans(X,K)
[Idx,C,sumD,D]=Kmeans(X,K)
各输入输出参数介绍:
X—NP的数据矩阵
K—表示将X划分为几类,为整数
Idx—N1的向量,存储的是每个点的聚类标号
C—KP的矩阵,存储的是K个聚类质心位置
sumD—1K的和向量,存储的是类内所有点与该类质心点距离之和
D—N*K的矩阵,存储的是每个点与所有质心的距离
[┈]=Kmeans(┈,’Param1’,’Val1’,’Param2’,’Val2’,┈)
其中参数Param1、Param2等,主要可以设置为如下:
1、’Distance’—距离测度
‘sqEuclidean’—欧氏距离
‘cityblock’—绝对误差和,又称L1
‘cosine’—针对向量
‘correlation’—针对有时序关系的值
‘Hamming’—