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