第六章 聚类分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§3系统聚类法
层次聚类法(Hierarchical Clustering)的计算步骤:
①计算n个样本两两间的距离{d ij},记D
②构造n个类,每个类只包含一个样本;
③合并距离最近的两类为一新类;
④计算新类与当前各类的距离;若类的个数等于1,转到5);否则回3);
⑤画聚类图;
⑥决定类的个数和类;
Matlab软件对系统聚类法的实现(调用函数说明):
cluster 从连接输出(linkage)中创建聚类
clusterdata 从数据集合(x)中创建聚类
dendrogram 画系统树状图
linkage 连接数据集中的目标为二元群的层次树
pdist计算数据集合中两两元素间的距离(向量) squareform 将距离的输出向量形式定格为矩阵形式
zscore 对数据矩阵X 进行标准化处理
各种命令解释
⑴T = clusterdata(X, cutoff)
其中X为数据矩阵,cutoff是创建聚类的临界值。即表示欲分成几类。
以上语句等价与以下几句命令:
Y=pdist(X,’euclid’)
Z=linkage(Y,’single’)
T=cluster(Z,cutoff)
以上三组命令调用灵活,可以自由选择组合方法!
⑵T = cluster(Z, cutoff)
从逐级聚类树中构造聚类,其中Z是由语句likage产生的(n-1)×3阶矩阵,cutoff是创建聚类的临界值。
⑶Z = linkage(Y) Z = linkage(Y, 'method')
创建逐级聚类树,其中Y是由语句pdist产生的n(n-1)/2 阶向量,’method’表示用何方法,默认值是欧氏距离(single)。有’complete’——最长距离法;‘average’——类平均距离;‘centroid’——重心法;‘ward‘——递增平方和等。
⑷Y = pdist(X) Y = pdist(X, 'metric')
计算数据集X中两两元素间的距离,‘metric’表示使用特定的方法,有欧氏距离‘euclid’(缺失值) 、标准欧氏距离‘SEuclid’ 、马氏距离‘mahal’、明可夫斯基距离‘Minkowski‘等。
⑸H = dendrogram(Z) H = dendrogram(Z, p)
由likage产生的数据矩阵z画聚类树状图。P是结点数,默认值是30。
2.2举例说明
设某地区有八个观测点的数据,样本距离矩阵如表1所示,根据最短距离法聚类分析。
%最短距离法系统聚类分析
X=[7.90 39.77 8.49 12.94 19.27 11.05 2.04 13.29;
7.68 50.37 11.35 13.3 19.25 14.59 2.75 14.87;
9.42 27.93 8.20 8.14 16.17 9.42 1.55 9.76;
9.16 27.98 9.01 9.32 15.99 9.10 1.82 11.35;
10.06 28.64 10.52 10.05 16.18 8.39 1.96 10.81];
BX=zscore(X); % 标准化数据矩阵
Y=pdist(X) % 用欧氏距离计算两两之间的距离
D=squareform(Y) % 欧氏距离矩阵
Z = linkage(Y) % 最短距离法
T = cluster(Z,3) %等价于{ T=clusterdata(X,3) }
find(T==3) % 第3类集合中的元素
[H,T]=dendrogram(Z) % 画聚类图
例6.4.1
x=[190.33 43.77 9.73 60.54 49.01 9.04;135.2 36.4 10.47 44.16 36.49 3.94;95.21 22.83 9.3 22.44 22.81 2.8;104.78 25.11 6.4 9.89 18.17 3.25;128.41 27.63 8.94 12.58 23.99 3.27;145.68 32.83 17.79 27.29 39.09 3.47;159.37 33.38 18.37 11.81 25.29 5.22;116.22 29.57 13.24 13.76 21.75 6.04;221.11 38.64 12.53 115.65 50.82 5.89;144.98 29.12 11.67 42.6 27.3 5.74;169.92 32.75 12.72 47.12 34.35 5;153.11 23.09 15.62 23.54 18.18 6.39;144.92 21.26 16.96 19.52 21.75 6.73;140.54 21.5 17.64 19.19 15.97 4.94;115.84 30.26 12.2 33.61 33.77 3.85;101.18 23.26 8.46 20.2 20.5 4.3];
zx=zscore(x);
y=pdist(zx);
z=linkage(y,'average')
z =
12.0000 13.0000 0.6656
3.0000 16.0000 0.9931
4.0000 18.0000 1.0711
14.0000 17.0000 1.2032
10.0000 11.0000 1.2670
5.0000 19.0000 1.2756
2.0000 15.0000 1.2833
21.0000 23.0000 1.7088
6.0000
7.0000 1.8245
8.0000 20.0000 1.8799
24.0000 25.0000 2.3302
26.0000 27.0000 2.6476
22.0000 28.0000 2.9664
1.0000 9.0000 3.1788
29.0000 30.0000 5.2728
s={'北京','天津','河北','山西','内蒙古','辽宁','吉林','黑龙江','上海','江苏','浙江','安徽','福建','江西','山东','河南'}
dendrogram(z,'orientation','right','labels',s)