Matlab中K-means聚類算法的使用(K-均值聚類)


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 N*P的數據矩陣
K 表示將X划分為幾類,為整數
Idx N*1的向量,存儲的是每個點的聚類標號
C K*P的矩陣,存儲的是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 =
     1
     2
     3
     1
     3
     2

C =
    5.0000    3.4000    1.3500    0.2500   -1.0000
    5.6500    2.6000    4.2000    1.2000         0
6.3000    3.0500    5.3500    2.1000    1.0000

sumD =
    0.0300
    0.1250
    0.6300

D =
    0.0150   11.4525   25.5350
   12.0950    0.0625    3.5550
   29.6650    5.7525    0.3150
    0.0150   10.7525   24.9650
   21.4350    2.3925    0.3150
   10.2050    0.0625    4.0850


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM