Matlab中实现K-means聚类算法

K-means聚类算法采用的是将N*P的矩阵X划分为K个类,使得类内对象之间的距离最大,而类之间的距离最小。

使用方法:
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的数据矩阵
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’ 只针对二进制数据

  2. ‘Start’(初始质心位置选择方法)
    ‘sample’ 从X中随机选取K个质心点
    ‘uniform’ 根据X的分布范围均匀的随机生成K个质心
    ‘cluster’ 初始聚类阶段随机选择10%的X的子样本(此方法初始使用’sample’方法)
    matrix 提供一K*P的矩阵,作为初始质心位置集合

  3. ‘Replicates’(聚类重复次数) 整数;
    ‘emptyaction’(空簇处理方法):‘drop’

使用案例
输入:
data=[5.0 3.5 1.3 0.3 -1;5.5 2.6 4.4 1.2 0;6.7 3.1 5.6 2.4 1;5.0 3.3 1.4 0.2 -1;5.9 3.0 5.1 1.8 1;5.8 2.6 4.0 1.2 0]
[Idx,C,sumD,D]=kmeans(data,3,‘dist’,‘sqEuclidean’,‘rep’,4)
输出:
Idx =
2
3
1
2
1
3
C =
6.3000 3.0500 5.3500 2.1000 1.0000
5.0000 3.4000 1.3500 0.2500 -1.0000
5.6500 2.6000 4.2000 1.2000 0
sumD =
0.6300
0.0300
0.1250

链接: https://www.cnblogs.com/wangduo/p/5292497.html

你可能感兴趣的:(matlab)