利用kmeans分类对重庆经济进行分析
本文用matalab 中的KMEANS 函数对重庆市2014年38区县经济发展水平的评价指标进行聚类分析,并对结果进行分析。
1、指标体系
数据概览:
2、聚类
1) kmeans常用的调用形式
IDX = KMEANS (X, K)
[IDX,C] = KMEANS (X, K)
[IDX,C, SUMD] = KMEANS (X, K)
[IDX,C, SUMD,D] = KMEANS (X, K)
2) 参数及返回值意义
X:N*P的数据矩阵。
K:表示将X划分为几类,为整数。
IDX:N*1的向量,存储的是每个点的聚类标号。
C:K*P的矩阵,存储的是K个聚类质心位置。
SUMD:1*K的和向量,存储的是类间所有点与该类质心点距离之和。
D:N*K的矩阵,存储的是每个点与所有质心的距离。
3) 调用kmeans工具箱并进行结果分析。
i. 利用多维等高线初步确定应当将样本分为几类
contour3(A1);title(‘样本多维等高图’)
通过结果我们可以发现,等高图将多维样本大致分为三个层次。
ii. 调用kmeans工具箱
A1 = zscore(A);
[IDX,C,SUMD,D] = kmeans(A1,3);
执行得到如下结果:
IDX’=
聚类中心点C’=
各类中样本到聚类中心点距离和
iii. 结果分析
地区分析
三类在地图中的直观体现。可以看到,整个重庆渝中区周围为一类(类标为3),因为经济水平相对较高;整体而言重庆西部的经济水平明显高于东部地区;值得一提的是万州区,虽然处在重庆的东部,但是由于万州的位置特殊以及发展水平比较高,使得万州的经济水平相较于其它东部地区也有明显的差别。
第一类(类标为1)为以下地区(地图中蓝色):
第二类(类标为2)为以下地区(地图中橙色):
第三类(类标为3)为以下地区(地图中红色):
指标分析:
parallelcoords(A1(a1,:),’color’,’b’);title(‘Ñù±¾Ö¸±ê•ÖÎö’);hold on
parallelcoords(A1(a2,:),’color’,’y’);hold on
parallelcoords(A1(a3,:),’color’,’r’);hold off
通过指标分析,我们可以看出前面12个指标对于每一类来说具有明显差别,1类地区前面12个指标处在较低水平,2类地区前12个指标处在中等水平,3类地区前12个指标处在较高水平,这也显示2、3类地区的经济水平和消费水平处在较高水平。后面9个指标整体来说没有特别明显的差别,而且整体来说1、2类地区的经济潜力高于1类地区。这也说明目前尚出较低水平的地区将有较大的发展潜力。
有明显差别的指标(前12个指标):
无明显差别的指标(潜力指标)(后9个指标):
iv. 主要代码
clc
clear
data = importdata('data2.xls');
A = data.data;
B = data.textdata;
b = B(1,:);
B(1,:) = [];
A1 = zscore(A);
[IDX,C,SUMD,D] = kmeans(A1,3);
a1=find(IDX==1);
a2=find(IDX==2);
a3=find(IDX==3);
B1 = B(a1,1)';
B2 = B(a2,1)';
B3 = B(a3,1)';
fnshp_P='...\CQ.shp';
S = shaperead(fnshp_P);
c1=fit(B1,S);
c2=fit(B2,S);
c3=fit(B3,S);
mapshow(c1,'FaceColor', [0.3 0.5 1]);
mapshow(c2,'FaceColor', [1 0.5 0]);
mapshow(c3,'FaceColor', [1 0 0]);
注:1.文中可能需要用到的重庆地图.shp格式数据可以参考:http://download.csdn.net/detail/xffj_lg/9291503