資料處理 聚類分析

小潘東發表於2017-12-14

參考:[聚類分析-中大數模的部落格](http://blog.sina.com.cn/s/blog_656fe31a0100hqq5.html)

A = [
1.00	54.89	30.86	448.70	.01	1.01	13.50
2.00	72.49	42.61	467.30	.01	1.64	13.00
3.00	53.81	52.86	425.61	.00	1.22	13.75
4.00	64.74	39.18	469.80	.01	1.22	14.00
5.00	58.80	37.67	456.55	.01	1.01	14.25
6.00	43.67	26.18	395.78	.00	.59	12.75
7.00	54.89	30.86	448.70	.01	1.01	12.50
8.00	86.12	43.79	440.13	.02	1.77	12.25
9.00	60.35	38.20	394.40	.00	1.14	12.00
10.00	54.04	34.23	405.60	.01	1.30	11.75
11.00	61.23	37.35	446.00	.02	1.38	11.50
12.00	60.17	33.67	383.20	.00	.91	11.25
13.00	69.69	40.01	416.70	.01	1.35	11.00
14.00	72.28	40.12	430.80	.00	1.20	10.75
15.00	55.13	33.02	445.80	.01	.92	10.50
16.00	70.08	36.81	409.80	.01	1.19	10.25
17.00	63.05	35.07	384.10	.00	.85	10.00
18.00	48.75	30.53	342.90	.02	.92	9.75
19.00	52.28	27.14	326.29	.00	.82	9.50
20.00	52.21	36.18	388.54	.02	1.02	9.25
21.00	49.71	25.43	331.10	.01	.90	9.00
22.00	61.02	29.27	258.94	.02	1.19	8.75
23.00	53.68	28.79	292.80	.05	1.32	8.50
24.00	50.22	29.17	292.60	.01	1.04	8.25
25.00	65.34	29.99	312.80	.01	1.03	8.00
26.00	56.39	29.29	283.00	.02	1.35	7.80
27.00	66.12	31.93	344.20	.00	.69	7.50
28.00	73.89	32.94	312.50	.06	1.15	7.25
29.00	47.31	28.55	294.70	.01	.84	7.00];
X=A(:,[2:7])';% 6列
Y = pdist(X,'correlation');% 1.計算類間距離
disp('距離距陣:')
M= squareform(Y)    % 2.得到距離矩陣.將距離矩陣從上三角形式轉換為方形形式,或反之

% 比較不同類間距離的相關係數哪個最大,選擇最大的作為linkage引數
Z1 = linkage(Y);Z2 = linkage(Y,'complete');Z3 = linkage(Y,'average');Z4 = linkage(Y,'weighted');Z5 = linkage(Y,'centroid');Z6 = linkage(Y,'median');Z7 = linkage(Y,'ward');
R = [cophenet(Z1,Y),cophenet(Z2,Y),cophenet(Z3,Y),cophenet(Z4,Y),cophenet(Z5,Y),cophenet(Z6,Y),cophenet(Z7,Y),]

% 由於引數為'average'的相關係數最大,所以選擇它
Z = linkage(Y,'average');   % 3.建立系統聚類樹(選擇不同的類間距離)

H=dendrogram(Z,0,'colorthreshold','default');% 4.做出譜系聚類圖.畫出分類(輸出冰柱圖)
[C,D] = cophenet(Z,Y)% 5.計算相關係數.C是評價,D是樹圖的高度.相關係數越接近於1則該聚類越理想

%有了D,我們也可以直接得出C=corr(D’,Y’)。
cluster(Z,'maxclust',2) %6.根據linkage函式的輸出建立分類,2表示最後分成兩類
複製程式碼

相關文章