【matlab小白训练】聚类分析

发布于:2022-12-21 ⋅ 阅读:(254) ⋅ 点赞:(0)

  马上就要数学建模国赛了,趁还有几天整理一下代码,到时候方便自己使用。主要参考司守奎的《数学建模算法与应用》,matlab是2020版本。


目录 

    本例主要摘自司守奎《数学建模算法与应用》第3版p271页的例题,数据取了前9行,所以结果会和书里的不大一样,到时候跟据题目修改自己需要的数据即可。

    简单说明一下聚类分析,聚类分析又称群分析,聚类分析分为Q型聚类分析和R型聚类分析。其中,Q型聚类分析是对样本进行分类;R型聚类分析是对指标进行分类。


一、数据

下表数据就是等会matlab需要用的data。

地区 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
北京 5.96 310 461 1557 931 319 44.36 2615 2.2 13631
上海 3.39 234 308 1035 498 161 35.02 3052 0.9 12665
天津 2.35 157 229 713 95 109 38.4 3031 0.86 9385
陕西 1.35 81 111 364 150 58 30.45 2699 1.22 7881
辽宁 1.5 88 128 421 144 58 34.3 2808 0.54 7733
吉林 1.67 86 120 370 153 58 33.53 2215 0.76 7480
黑龙江 1.17 61 93 296 117 44 35.22 2528 0.58 8570
湖北 1.05 67 92 297 115 43 32.89 2835 0.66 7262
江苏 0.95 64 94 287 102 39 31.54 3008 0.39 7786

二、R型聚类

代码

%R型聚类
a=data;
b=zscore(a);                               %数据标准化
r=corrcoef(b);                             %计算相关系数矩阵
%d=(1-r);d=nonzeros(d)';                  %另外一种计算矩阵方法
z=linkage(b','average','correlation');     %按类平均法聚类
h=dendrogram(z);                           %画聚类图
set(h,'Color','k','LineWidth',1.3);        %把聚类图线的颜色改成黑色,线宽加粗
T=cluster(z,'maxclust',6);                 %把变量划分为6类
for i=1:6
    tm=find(T==i);
    fprintf('第%d类的有%s\n',i,int2str(tm'));
end

结果

第1类的有10
第2类的有1  2  3  4  6
第3类的有5
第4类的有7
第5类的有9
第6类的有8


三、Q型聚类

代码

%Q型聚类
a=data;
a(:,[3:6])=[];                      %根据自己情况选择需要的指标,本例只需要x1,x2,x7,x8,x9,x10
b=zscore(a);                        %数据标准化
z=linkage(b,'average');             %按类平均法聚类
h=dendrogram(z);                    %画聚类图
set(h,'Color','k','LineWidth',1.3)  %把聚类图线的颜色改成黑色,线宽加粗
for k=3:5
    fprintf('划分成%d类的结果如下:\n',k);
    T = cluster(z,'maxclust',k);
    for i = 1:k
        tm=find(T==i);%求第i类的对象
        fprintf('第%d类的有%s\n',i,int2str(tm'));    %显示分类结果
    end
    fprintf('**********************\n');
end

结果

划分成3类的结果如下:
第1类的有2  3
第2类的有4  5  6  7  8  9
第3类的有1
**********************
划分成4类的结果如下:
第1类的有6  7
第2类的有4  5  8  9
第3类的有2  3
第4类的有1
**********************
划分成5类的结果如下:
第1类的有2
第2类的有3
第3类的有6  7
第4类的有4  5  8  9
第5类的有1
**********************


网站公告

今日签到

点亮在社区的每一天
去签到