matlab中k 均值聚類詳解

2021-06-27 06:52:15 字數 1607 閱讀 6886

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』(聚類重複次數) 整數

使用案例:

>> 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

3 21 2

3c =

5.0000    3.4000    1.3500    0.2500   -1.0000

6.3000    3.0500    5.3500    2.1000    1.0000

5.6500    2.6000    4.2000    1.2000   -0.0000

sumd =

0.0300

0.6300

0.1250

d =0.0150   25.5350   11.4525

12.0950    3.5550    0.0625

29.6650    0.3150    5.7525

0.0150   24.9650   10.7525

21.4350    0.3150    2.3925

10.2050    4.0850    0.0625

K 均值聚類Matlab實現

推導公式以及原理不講,直接上演算法步驟 產生高斯分布資料 mu 0 0 sigma eye size mu,2 x mvnrnd mu,sigma,200 m,n size x k 3 類別數 distance zeros 1,k 存放資料點與聚類中心的距離 center zeros m,k 用於存...

K 均值聚類

剛剛寫了篇分級聚類的,趁著餘熱,再寫一下關於k 均值聚類的。為了突出k 均值聚類的特點,先黑一下分級聚類。跟k 均值聚模擬起來,分級聚類演算法有一下缺點 第一,的那個沒有額外投入的時候,樹形試圖是不會真正將資料拆分成不同組的。第二,分級聚類的計算演算法計算量相當大。當兩個節點合併之後,節點之間的距離...

k均值聚類

k均值聚類就是利用歐氏距離的度量將距離相近的樣本分為k類 a.假設有m個樣本,首先隨機選擇k個樣本作為聚類的質心 要分成k類 b.然後對於每個樣本,計算它到每個質心的距離,將它歸類於距離最小的那個質心 c.接著對初步分類的k個類別重新計算該類的質心,也就是對每個類別的樣本座標求平均 d.重複 b 步...