当前位置:   article > 正文

【数学建模】--聚类模型

聚类模型

聚类模型的定义:

“物以类聚,人以群分”,所谓的聚类,就是将样本划分为由类似的对象组成的多个类的过程。聚类后,我们可以更加准确的在每个类中单独使用统计模型进行估计,分析或预测;也可以探究不同类之间的相关性和主要差异。

聚类和分类的区别:分类是已知类别的,聚类未知。

 K-means聚类算法

流程:

  1. 指定划分的簇的k值(类的个数)
  2. 随机选择k个数据作为哦初始聚类中心(不一定是样本点)
  3. 将其余数据划分到距离较近的聚类中心
  4. 调整新类,将中心更新为已划分数据的中心
  5. 重复3,4步检查中心是否收敛(不变),如果收敛或达到迭代次数使停止循环。(一般循迭代次数设置为10次)
  6. 结束。

 

图形结合理解:

 

我们可以登录网站自行体验:Visualizing K-Means Clustering

如果使自己添加类的位置可以选择I‘ll Choose

 

选择自己喜欢的图形:

 

选择图形后添加类的位置然后一直点GO/Update Centroids直至不想不再发生变化。

 

算法流程图:

 

K_means算法的评价:

优点:快,高效率

缺点:需要给出k;对聚类中心敏感,聚类中心的位置不同结果不同;对孤立点敏感,孤立点对中心和其余样本带点的更新影响较大。

 

K-means算法—Spss操作:

 

聚类数根据自己想要分类的层次决定。

这里我们分为了高消费,中消费,低消费三类

 

得出结果

 

K-means算法的讨论:

需要自己给定k,当变量量纲不同的时候需要去量纲化。

Spss中去量纲化操作:

分析->描述统计->描述->导入需要去量纲化变量->√将标准化值另存为变量。

 

 

得到去量纲话Z-name

 

因为本次的例子变量单位相同不需要去量纲化,为了方便就拿此例子的数据去量纲化得到的结果有些轻微差

 

系统(层次)模型

简介:

 

过程及原理简介:

 

 

样品与样品之间的常用距离:

 

指标与指标之间的常用距离:

 

类与类之间的常用距离以及计算方法:

 

 

 

 

 

 

案例:

 

 

得到聚类的谱系图:

 

我们想要将数据分成几类通过对谱系图作垂线可得到明显的类组如在G9后面的线作垂线得到G1,2,4,5,6,7,8为一组,G3为一组一共两组。

 

 

注意问题:

 

系统聚类在SPSS中的操作:

分析-分类-系统聚类-导入数据-图-√谱系图

由冰柱图聚类谱系图等。

 

如何确定类的个数:利用Excel中的折线图,在折线趋缓的时候找对应的横坐标即是合适的分类个数。

操作:

1.复制stata中得到的系数-excel-排序-降序

2.插入-推荐的图标-散点图-调整合适的x轴坐标范围

3.观察下降趋势趋缓的地方对应的x可作为分类的个数。

STATA                       EXCEL                                                    

 

            

 

 

确定K后保存聚类结果并画图

  1. 通过excel的三点分析确定k

分析-分类-系统聚类-保存-单个解-聚类数

  1. 作图:

图形-图标构建-散点图/点图-2个指标(第二个)上拖,3个指标(第四个)上拖-输入x轴,y轴-设置颜色(聚类)-组-点id标签(将省份拖入)-修改图的背景,散点等颜色(双击编辑)

 

图二是三维的

 

 

编辑界面:

 

DBSCAN算法

基本概念:

可以理解为流感,按一定的半径不断蔓延传播。

DBSCAN的优缺点:

 

指标只有很少比如只有两个的时候较为合适,DSCAN的制图对半径,和圆内所能容纳最大聚类个数非常敏感,稍微修改就有很大的显著差异。

 

DBSACN的制图网站:Visualizing DBSCAN Clustering (naftaliharris.com)

演示:

半径为1.2,最少容纳点为4:

 

半径为0.8,最少容纳点为4:

 

DBSACN的伪代码:

 

Matlab中的DBSACN代码:

IDX中的数据就是每个数据的分类,为0则是孤立点。

旁边则是DBSACN用matlab画出的图形。

 

Matlab代码:

主函数:

  1. clc;
  2. clear;
  3. close all;
  4. %% Load Data
  5. load mydata;%这里的数据跟随自己需要聚类的数据可以改变,后面的X是博主调试时使用的数据名可以自己改变。
  6. %% Run DBSCAN Clustering Algorithm
  7. epsilon=0.5;
  8. MinPts=10;
  9. IDX=DBSCAN(X,epsilon,MinPts);
  10. %% Plot Results
  11. % 如果只要两个指标的话就可以画图啦
  12. PlotClusterinResult(X, IDX);
  13. title(['DBSCAN Clustering (\epsilon = ' num2str(epsilon) ', MinPts = ' num2str(MinPts) ')']);

DBSCAN函数: 

  1. function [IDX, isnoise]=DBSCAN(X,epsilon,MinPts)
  2. C=0;
  3. n=size(X,1);
  4. IDX=zeros(n,1); % 初始化全部为0,即全部为噪音点
  5. D=pdist2(X,X);
  6. visited=false(n,1);
  7. isnoise=false(n,1);
  8. for i=1:n
  9. if ~visited(i)
  10. visited(i)=true;
  11. Neighbors=RegionQuery(i);
  12. if numel(Neighbors)<MinPts
  13. % X(i,:) is NOISE
  14. isnoise(i)=true;
  15. else
  16. C=C+1;
  17. ExpandCluster(i,Neighbors,C);
  18. end
  19. end
  20. end
  21. function ExpandCluster(i,Neighbors,C)
  22. IDX(i)=C;
  23. k = 1;
  24. while true
  25. j = Neighbors(k);
  26. if ~visited(j)
  27. visited(j)=true;
  28. Neighbors2=RegionQuery(j);
  29. if numel(Neighbors2)>=MinPts
  30. Neighbors=[Neighbors Neighbors2]; %#ok
  31. end
  32. end
  33. if IDX(j)==0
  34. IDX(j)=C;
  35. end
  36. k = k + 1;
  37. if k > numel(Neighbors)
  38. break;
  39. end
  40. end
  41. end
  42. function Neighbors=RegionQuery(i)
  43. Neighbors=find(D(i,:)<=epsilon);
  44. end
  45. end

 DBSCAN制图函数:

  1. function PlotClusterinResult(X, IDX)
  2. k=max(IDX);
  3. Colors=hsv(k);
  4. Legends = {};
  5. for i=0:k
  6. Xi=X(IDX==i,:);
  7. if i~=0
  8. Style = 'x';
  9. MarkerSize = 8;
  10. Color = Colors(i,:);
  11. Legends{end+1} = ['Cluster #' num2str(i)];
  12. else
  13. Style = 'o';
  14. MarkerSize = 6;
  15. Color = [0 0 0];
  16. if ~isempty(Xi)
  17. Legends{end+1} = 'Noise';
  18. end
  19. end
  20. if ~isempty(Xi)
  21. plot(Xi(:,1),Xi(:,2),Style,'MarkerSize',MarkerSize,'Color',Color);
  22. end
  23. hold on;
  24. end
  25. hold off;
  26. axis equal;
  27. grid on;
  28. legend(Legends);
  29. legend('Location', 'NorthEastOutside');
  30. end

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/204865
推荐阅读
相关标签
  

闽ICP备14008679号