作者:王诗昀彦廷 | 来源:互联网 | 2023-09-04 09:51
具体的题目我。。。找不到了,但我先把这次SAS的代码放上来,如果我没记错的话,本次实验应该是从国家统计局上搜集了全国各大省份的一些资料,但。。。。忘记具体是什么资料了,这不重要,主要目的就是利用SAS软件对数据做聚类分析,然后我们根据得到的结果来产生我们想要得到的信息。
data a;
input province $ x1 x2 x3 [email protected]@;
cards;
北京 238372 27376 659.03 115.66
天津 84047 18181 314.66 52.05
河北 138840 155071 762.14 282.6
山西 88125 121958 465.34 158.33
辽宁 178270 98147 836.04 179.7
吉林 59503 57870 340.89 115.82
黑龙江 85931 88720 510.59 179.99
上海 304322 31395 860.15 93.48
江苏 364330 118086 1519.84 245.79
浙江 312065 119009 1059.39 167.54
;
run;
proc cluster data=a method=ward std
outtree=eco1 pseudo;
id province;
run;
这便是简单聚类的代码,根据需求的不同,大家可以按照需求来使用不同的聚类方法。
以上是我们用的一类聚类方法,下面将给出另一类。
data examp632(type=distance);
input x1-x10;
cards;
0 1.5460 1.6190 1.7754 0.9285 1.8145 1.6432 0.6607 1.5522 1.1759
1.5460 0 1.4745 1.0386 1.2358 0.4667 0.7056 2.2067 2.9756 2.4932
1.6190 1.4745 0 0.6057 0.6925 1.2547 0.8486 2.0659 2.2850 1.7694
1.7754 1.0386 0.6057 0 0.9324 0.7019 0.3331 2.3440 2.7623 2.2396
0.9285 1.2358 0.6925 0.9324 0 1.2541 0.9282 1.4264 1.8713 1.3541
1.8145 0.4667 1.2547 0.7019 1.2541 0 0.4062 2.4625 3.1072 2.5986
1.6432 0.7056 0.8486 0.3331 0.9282 0.4062 0 2.2579 2.7995 2.2815
0.6607 2.2067 2.0659 2.3440 1.4264 2.4625 2.2579 0 1.0544 0.8796
1.5522 2.9756 2.2850 2.7623 1.8713 3.1072 2.7995 1.0544 0 0.5228
1.1759 2.4932 1.7694 2.2396 1.3541 2.5986 2.2815 0.8796 0.5228 0
;
proc print data=examp632;
run;
proc cluster data=examp632 method=ward;
var x1-x10;
proc tree horizontal;
run;
不再做过多描述,直接把聚类图象放给大家对比
对比两种方法,很容易发现两种方法产生的聚类方法并不一致,这并不代表聚类中出现了错误。
在聚类中,我们是按照类与类之间的距离来做聚类的,a与d两类之间的距离最近,则在本轮聚类中,a、d则天然归于一类,但由于类与类间距离的计算方式并不唯一,有欧式距离,也有其他的距离计算方法,这便导致了不同方法聚类中可能出现结论不同的结果,这种情况不用过多在意,选取最适合的方法即可。
写得不好,请各位谅解,有错误之处敬请指正。