第六章 聚类分析Word格式.docx
《第六章 聚类分析Word格式.docx》由会员分享,可在线阅读,更多相关《第六章 聚类分析Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
计算样本点之间的相似距离
另外,内部函数yy=squareform(y)表示将样本点之间的距离用矩阵的形式输出。
(3)常用的聚类方法
常用的聚类方法主要有以下几种:
最短距离法、最长距离法、中间距离法、重心法、平方和递增法等等。
(4)创建系统聚类树
假设已经得到样本点之间的距离y,可以用linkage函数创建系统聚类树,格式为:
z=linkage(y),其中z为一个包含聚类树信息的(m–1)×
3的矩阵。
例如,
z=
2.0005.0000.2
3.0004.0001.28
则,z的第一行表示第2、第5样本点连接为一个类,它们的距离为0.2,z的第二行表示第3、第4样本点连接为一个类,它们的距离为1.28。
在Matlab中创建系统聚类树的函数为:
z=linkage(y)
表示用最短距离法创建系统聚类树
z=linkage(y,‘complete’)
表示用最长距离法创建系统聚类树
z=linkage(y,‘average’)
表示用平均距离法创建系统聚类树
z=linkage(y,‘centroid’)
表示用重心距离法创建系统聚类树
z=linkage(y,‘ward’)
表示用平方和递增法创建系统聚类树
例1在Matlab中写一个名字为opt_linkage_1的M—文件:
x=[31.7;
11;
23;
22.5;
1.21;
1.11.5;
31];
y=pdist(x,'
mahal'
);
yy=squareform(y)
z=linkage(y,’centroid’)
h=dendrogram(z)
存盘后按F5键执行,得到结果:
yy=
02.38792.19831.69462.16842.2284
2.387902.60972.06160.23780.6255
2.19832.609700.63532.55222.0153
1.69462.06160.635301.97501.5106
2.16840.23782.55221.975000.6666
2.22840.62552.01531.51060.66660
0.88952.37782.98902.41722.14002.4517
z=
2.00005.00000.2378
8.00006.00000.6353
3.00004.00000.6353
1.00007.00000.8895
9.000010.00002.1063
11.000012.00002.0117
按重心距离法得到的系统聚类树为:
其中,h=dendrogram(z)表示输出聚类树形图的冰状图。
(5)根据系统聚类树创建聚类
假设已经求出系统聚类树z,我们根据z来创建聚类,使用cluster函数。
例2在Matlab中写一个名字为opt_cluster_1的M—文件:
z=linkage(y,'
centroid'
t=cluster(z,3)
程序中“t=cluster(z,3)”表示分成3个聚类,需要分成几类由人工选择。
存盘后按F5键执行,得到:
t=
3
1
2
3
即,第1个样本点、第7个样本点为第3类,第2、第5、第6样本点为第1类,第3、第4样本点为第2类。
(6)根据原始数据创建分类
在Matlab软件包中,由内部函数clusterdata对原始数据创建分类,格式有两种:
1clusterdata(x,a),其中
,表示在系统聚类树中距离小于a的样本点归结为一类;
2clusterdata(x,b),其中
是整数,表示将原始数据x分为b类。
例3在Matlab中写一个名字为opt_clusterdata_1的M—文件:
t=clusterdata(x,0.5)
z=clusterdata(x,3)
4
其中,t的结果表示距离小于0.5的样本点归结为一类,这样,共有四类,第1类:
样本点2、5;
第2类:
样本点1、7;
第3类:
样本点6;
第4类:
样本点3、4。
而z的结果表示首先约定将原始数据x分为3类,然后计算,结果如下,第1类:
样本点3、4;
样本点2、5、6。
利用内部函数clusterdata对原始数据创建分类,其缺点是不能更改距离的计算方法。
比较好的方法是分步聚类法。
(7)分步聚类法
假设有样本数据矩阵x。
第1步对于不同的距离,利用pdist函数计算样本点之间的距离
y1=pdist(x)
y2=pdist(x,‘seuclid’)
y3=pdist(x,‘mahal’)
y4=pdist(x,‘cityblock’)
第2步计算系统聚类树以及相关信息
z1=linkage(y1)
z2=linkage(y2)
z3=linkage(y3)
z4=linkage(y4)
第3步利用cophenet函数计算聚类树信息与原始数据的距离之间的相关性,这个值越大越好。
t1=cophenet(z1,y1)
t2=cophenet(z2,y2)
t3=cophenet(z3,y3)
t4=cophenet(z4,y4)
z在前y在后,顺序不能颠倒。
第4步选择具有最大的cophenet值的距离进行分类。
利用函数clusterdata(x,a)对数据x进行分类,其中
,表示在系统聚类树中距离小于a的样本点归结为一类。
例4在Matlab中写一个名字为opt_cluster_2的M—文件:
y1=pdist(x);
y2=pdist(x,'
seuclid'
y3=pdist(x,'
y4=pdist(x,'
cityblock'
z1=linkage(y1);
z2=linkage(y2);
z3=linkage(y3);
z4=linkage(y4);
a1=cophenet(z1,y1)
a2=cophenet(z2,y2)
a3=cophenet(z3,y3)
a4=cophenet(z4,y4)
a1=
0.9291
a2=
0.9238
a3=
0.9191
a4=
0.9242
结果中a1=0.9291最大,可见此例利用欧氏距离最合适。
于是,在Matlab中另写一个名字为opt_cluster_3的M—文件:
z1=linkage(y1)
z1=
2.00005.00000.2000
3.00004.00000.5000
8.00006.00000.5099
1.00007.00000.7000
11.00009.00001.2806
12.000010.00001.3454
矩阵z1的第1行表示样本点2、5为一类,在系统聚类树上的距离为0.2,其它类推。
考察矩阵z1的第3列,系统聚类树上的6个距离,可以选择0.5作为聚类分界值。
在Matlab中另写一个名字为opt_cluster_4的M—文件:
b1=cluster(z1,0.5)
b1=
结果表示首先约定将原始数据x分为4类,然后计算,结果如下,第1类:
在Mathematica软件包中,作样本点的图像如下:
第1步执行<
<
Graphics`Graphics`
第2步输入以下程序
x={{3,1.7},{1,1},{2,3},{2,2.5},{1.2,1},{1.1,1.5},{3,1}};
t1=ListPlot[x,PlotStyle->
{RGBColor[0,1,1],PointSize[0.05]}
t2=TextListPlot[x]
Show[t1,t2]
执行后得到以下图像,
例5现有21国森林、草原资源数据如下:
序号
国别
森林面积
(万公顷)
森林覆盖率
(%)
林木蓄积量
(亿立方米)
草原面积
1
中国
11978
12.5
93.5
31908
2
美国
28446
30.4
202
23754
日本
2501
67.2
24.8
58
4
德国
1028
28.4
14
599
5
英国
210
8.6
1.5
1147
6
法国
1458
26.7
16
1288
7
意大利
635
21.1
3.6
514
8
加拿大
32613
32.7
192.8
2385
9
澳大利亚
10700
13.9
10.5
45190
10
前苏联
92000
41.1
841.5
37370
11
捷克
458
35.8
8.9
168
12
波兰
868
27.8
11.4
405
13
匈牙利
161
17.4
2.5
129
前南斯拉夫
929
36.3
640
15
罗马尼亚
634
11.3
447
保加利亚
385
34.7
200
17
印度
6748
20.5
29
1200
18
印度尼西亚
2180
84
33.7
19
尼日利亚
1490
16.1
0.8
2090
20
墨西哥
4850
24.6
32.6
7450
21
巴西
57500
67.6
238
15900
请将这些国家分类。
我们在matlab软件包中,编写一个名字为opt_cluster_country_1的M—文件:
x=[11978,12.5,93.5,31908;
28446,30.4,202,23754;
2501,67.2,24.8,58;
1028,28.4,14,599;
210,8.6,1.5,1147;
1458,26.7,16,1288;
635,21.1,3.6,514;
32613,32.7,192.8,2385;
10700,13.9,10.5,45190;
92000,41.1,841.5,37370;
458,35.8,8.9,168;
868,27.8,11.4,405;
161,17.4,2.5,129;
929,36.3,11.4,640;
634,26.7,11.3,447;
385,34.7,2.5,200;
6748,20.5,29,1200;
2180,84,33.7,1200;
1490,16.1,0.8,2090;
4850,24.6,32.6,7450;
57500,67.6,238,15900];
存盘后按F5键,执行后得到:
0.9393
0.9470
0.9131
0.9614
其中,“a4=0.9614”最大,说明此时应用cityblock距离最好。
于是,在matlab软件包中,编写一个名字为opt_cluster_country_2的M—文件:
z4=linkage(y4)
b4=cluster(z4,0.5)
h4=dendrogram(z4)
z4=
1.0e+004*
0.00070.00150.0081
0.00110.00160.0113
0.00040.00140.0150
0.00220.00120.0277
0.00240.00250.0305
0.00230.00130.0312
0.00260.00270.0466
0.00060.00190.0860
0.00290.00180.0885
0.00280.00050.1073
0.00310.00300.1123
0.00030.00320.1489
0.00330.00170.4636
0.00340.00200.8156
0.00010.00091.4644
0.00360.00022.4748
0.00370.00082.5547
0.00380.00352.7226
0.00390.00213.6981
0.00400.00105.6600
b4=
6
13
5
10
14
16
7
8
11
9
12
15
即,共分为16类,分类结果为:
第1类:
意大利、罗马尼亚
德国、前南斯拉夫
捷克、保加利亚
法国、尼日利亚
第5类:
日本、
第6类:
中国、澳大利亚
第7类:
第8类:
第9类:
第10类:
第11类:
第12类:
第13类:
第14类:
第15类:
第16类:
例6根据调查得到某地42所学校的数据如下:
单位
占地面积(
建筑面积(
教师总数
学生总数
学校1
2088
562.05
42
434
学校2
10344.8
4755
76
1279
学校3
2700
4100
56
820
学校4
3967
3751
67
990
学校5
5850.24
6173.25
78
1241
学校6
1803.26
5224.99
72
1180
学校7
2165
2391
47
671
学校8
3838
3815
104
1400
学校9
2268
8011
800
学校10
9809
3000
90
1597
学校11
2996
3889
61
745
学校12
2886
3372
65
1722
学校13
32000
18000
2000
学校14
11842
11106
143
2006
学校15
7610
5310
69
790
学校16
20518
30867
188
2658
学校17
7860
8313
77
852
学校18
5570
5579
103
1350
学校19
19600
8600
108
学校20
13351.47
8784
190
2580
学校21
9534
12446
142
1800
学校22
42080
19500
187
2609
学校23
2100
62
332
学校24
7928
7024
96
1267
学校25
26000
15000
160
学校26
12371
12173
128
1634
学校27
8561
6556
102
714
学校28
163
2904
学校29
18850
8332
85
1196
学校30
25244
10535
125
学校31
10000
8500
3700
学校32
15037
9523
133
1500
学校33
6579
7857
2285
学校34
30094
25027
175
2623
学校35
4238.73
8522.38
130
学校36
10846
8377
2300
学校37
27282.25
21614.04
2400
学校38
40000
13000
151
学校39
53333.3
16000
224
2132
学校40
60000
50000
360
学校41
100000
30000
1100
学校42
173333
420
2552
试将这些学校分类。
我们在matlab软件包中,编写一个名字为opt_school_1的M—文件:
x=[2088,562.05,42,434;
10344.8,4755,76,1279;
2700,4100,56,820;
3967,3751,67,990;
5850.24,6173.25,78,1241;
1803.26,5224.99,72,1180;
2165,2391,47,671;
3838,3815,104,1400;
2268,8011,56,800;
9809,3000,90,1597;
2996,3889,61,745;
2886,3372,65,1722;
32000,18000,200,2000;
11842,11106,143,2006;
7610,5310,69,790;
20518,30867,188,2658;
7860,8313,77,852;
5570,5579,103,1350;
19600,8600,108,1490;
13351.47,8784,190,2580;
9534,12446,142,1800;
42080,19500,187,2609;
2000,2100,62,332;
7928,7024,96,1267;
26000,15000,160,2000;
12371,12173,128,1634;
8561,6556,102,714;
11842,11106,163,29