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