参考:[聚类分析-中大数模的博客](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表示最后分成两类
复制代码