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

聚类模型的定义:

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

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

 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代码:

主函数:

clc;
clear;
close all;%% Load Dataload mydata;%这里的数据跟随自己需要聚类的数据可以改变,后面的X是博主调试时使用的数据名可以自己改变。%% Run DBSCAN Clustering Algorithmepsilon=0.5;
MinPts=10;
IDX=DBSCAN(X,epsilon,MinPts);%% Plot Results
% 如果只要两个指标的话就可以画图啦
PlotClusterinResult(X, IDX);
title(['DBSCAN Clustering (\epsilon = ' num2str(epsilon) ', MinPts = ' num2str(MinPts) ')']);

DBSCAN函数: 

function [IDX, isnoise]=DBSCAN(X,epsilon,MinPts)C=0;n=size(X,1);IDX=zeros(n,1);  % 初始化全部为0,即全部为噪音点D=pdist2(X,X);visited=false(n,1);isnoise=false(n,1);for i=1:nif ~visited(i)visited(i)=true;Neighbors=RegionQuery(i);if numel(Neighbors)<MinPts% X(i,:) is NOISEisnoise(i)=true;elseC=C+1;ExpandCluster(i,Neighbors,C);endendendfunction ExpandCluster(i,Neighbors,C)IDX(i)=C;k = 1;while truej = Neighbors(k);if ~visited(j)visited(j)=true;Neighbors2=RegionQuery(j);if numel(Neighbors2)>=MinPtsNeighbors=[Neighbors Neighbors2];   %#okendendif IDX(j)==0IDX(j)=C;endk = k + 1;if k > numel(Neighbors)break;endendendfunction Neighbors=RegionQuery(i)Neighbors=find(D(i,:)<=epsilon);endend

 DBSCAN制图函数:

function PlotClusterinResult(X, IDX)k=max(IDX);Colors=hsv(k);Legends = {};for i=0:kXi=X(IDX==i,:);if i~=0Style = 'x';MarkerSize = 8;Color = Colors(i,:);Legends{end+1} = ['Cluster #' num2str(i)];elseStyle = 'o';MarkerSize = 6;Color = [0 0 0];if ~isempty(Xi)Legends{end+1} = 'Noise';endendif ~isempty(Xi)plot(Xi(:,1),Xi(:,2),Style,'MarkerSize',MarkerSize,'Color',Color);endhold on;endhold off;axis equal;grid on;legend(Legends);legend('Location', 'NorthEastOutside');end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/85443.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaSE】数组的定义与使用

详解数组 数组的基本概念什么是数组数组的创建及初始化数组的使用 数组是引用类型基本类型变量与引用类型变量的区别引用变量认识 null 数组的应用场景数组练习二维数组 数组的基本概念 什么是数组 数组可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。比如现实…

FOHEART H1数据手套:连接虚拟与现实,塑造智能交互新未来

在全新交互时代背景中&#xff0c;数据手套无疑是一种重要的科技产物。它不仅彻底改变了我们与虚拟世界的互动方式&#xff0c;更为我们提供了一种全新、更为直观的交互形式。 FOHEART H1数据手套结合了虚拟现实、手势识别等高新技术&#xff0c;用先进的传感技术和精准的数据…

Chatgpt AI newbing作画,文字生成图 BingImageCreator 二次开发,对接wxbot

开源项目 https://github.com/acheong08/BingImageCreator 获取cookie信息 cookieStore.get("_U").then(result > console.log(result.value)) pip3 install --upgrade BingImageCreator import os import BingImageCreatoros.environ["http_proxy"]…

一个概率论例题引发的思考

浙江大学版《概率论与梳理统计》一书中的&#xff0c;第13章第1节例2如下&#xff1a; 这个解释和模型比较简单易懂。接下来&#xff0c;第2节的例2是一个关于此模型的题目&#xff1a; 在我自己的理解中&#xff0c;此题的解法跟上一个题目一样&#xff0c;第二级传输后&…

Python-组合数据类型

今天要介绍的是Python的组合数据类型 整理不易&#xff0c;希望得到大家的支持&#xff0c;欢迎各位读者评论点赞收藏 感谢&#xff01; 目录 知识点知识导图1、组合数据类型的基本概念1.1 组合数据类型1.2 集合类型概述1.3 序列类型概述1.4 映射类型概述 2、列表类型2.1 列表的…

网络:从socket编程的角度说明UDP和TCP的关系,http和tcp的区别

尝试从编程的角度解释各种网络协议。 UDP和TCP的关系 从Python的socket编程角度出发&#xff0c;UDP&#xff08;User Datagram Protocol&#xff09;和TCP&#xff08;Transmission Control Protocol&#xff09;是两种不同的传输协议。 TCP是一种面向连接的协议&#xff0c…

OPENCV C++(八)HOG的实现

hog适合做行人的识别和车辆识别 对一定区域的形状描述方法 可以表示较大的形状 把图像分成一个一个小的区域的直方图 用cell做单位做直方图 计算各个像素的梯度强度和方向 用3*3的像素组成一个cell 3*3的cell组成一个block来归一化 提高亮度不变性 常用SVM分类器一起使用…

【Unity细节】Unity打包后UI面板消失是怎么回事

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏&#xff1a;unity细节和bug ⭐关于物体的动画碰到其他碰撞器后停止播放的问题⭐ 文章目录 ⭐关于物体的动画碰…

纯C#使用Visionpro工具1

各个工具的程序集名称 一般分类 一般情况是去掉Tool和Cog就是命名空间&#xff0c;如CogBlobTool对应于Cognex.Visionpro.Blob 也有特殊情况 忘了怎么办 可以借用ToolBlock引入工具后打开高级脚本查看 了解工具类和对象

微信小程序上传图片和文件

1.从微信里选择图片或文件上传 使用的vant的上传组件 原生用 wx.chooseMessageFile() html <!-- 从微信上面选择文件 --><van-uploader file-list"{{ file }}" bind:after-read"afterRead" max-count"{{3}}" deletable"{{ true…

CSS前端开发指南:创造精美的用户界面

简介&#xff1a; 《CSS前端开发指南&#xff1a;创造精美的用户界面》是一本旨在帮助读者掌握CSS技术&#xff0c;实现令人惊叹的前端用户界面的实用指南。无论您是初学者还是有经验的开发者&#xff0c;本书都将为您提供全面的知识和实用技巧&#xff0c;帮助您创建引人注目…

【ES】笔记-箭头函数的实践于应用场景

箭头函数的实践于应用场景 需求-1 点击 div 2s后颜色变成[粉色]从数组中返回偶数的元素 需求-1 点击 div 2s后颜色变成[粉色] html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport…

029 - integer types 整数类型

MySQL支持SQL标准整数类型 INTEGER&#xff08;或INT&#xff09;和 SMALLINT。作为一个可扩展标准&#xff0c;MySQL也支持整数类型 TINYINT&#xff0c;MEDIUMINT和 BIGINT。下表显示了每种整数类型所需的存储空间和范围。 表11.1 MySQL支持的整数类型的必需存储和范围 类型…

QGraphicsView实现简易地图4『局部加载-地图漫游』

前文链接&#xff1a;QGraphicsView实现简易地图3『局部加载-地图缩放』 当鼠标拖动地图移动时&#xff0c;需要实时增补和删减瓦片地图&#xff0c;大致思路是计算地图从各方向移动时进出视口的瓦片坐标值&#xff0c;根据变化后的瓦片坐标值来增减地图瓦片&#xff0c;以下将…

【小曾同学赠书活动】开始啦—〖测试设计思想〗

文章目录 ❤️ 赠书 —《测试设计思想》&#x1f31f; 书籍介绍&#x1f31f; 作者简介图书链接❤️ 活动介绍 — 赠送 3 本 ❤️ 赠书 —《测试设计思想》 首先提问 你知道测试设计思想有哪几类吗&#xff1f;你想奠定扎实的测试理论基础吗&#xff1f;你想改变关于你当前测试…

用python来爬取某鱼的商品信息(1/2)

目录 前言 第一大难题——找到网站入口 曲线救国 模拟搜索 第二大难题——登录 提一嘴 登录cookie获取 第一种 第二种 第四大难题——无法使用导出的cookie 原因 解决办法 最后 出现小问题 总结 前言 本章讲理论&#xff0c;后面一节讲代码 拿来练练手的&#xff…

2023牛客暑期多校训练营8-I Make It Square

2023牛客暑期多校训练营8-I Make It Square https://ac.nowcoder.com/acm/contest/57362/I 文章目录 2023牛客暑期多校训练营8-I Make It Square题意解题思路代码实现 题意 解题思路 这里有两种情况&#xff0c;即 ∣ s ∣ > ∣ t ∣ |s|>|t| ∣s∣>∣t∣和 ∣ s ∣…

领航优配:暑期旅游市场热度持续攀升,相关公司业绩有望持续释放

到发稿&#xff0c;海看股份涨停&#xff0c;中广天择、探路者、众信旅行等涨幅居前。 8月8日&#xff0c;在线旅行板块震动上涨&#xff0c;到发稿&#xff0c;海看股份涨停&#xff0c;中广天择、探路者、众信旅行等涨幅居前。 今年以来&#xff0c;国内旅行商场逐渐恢复。文…

获取 Android 的 SHA1 值

1、调试版&#xff0c;可以直接在 Android studio 中的 gradle 中查看。也可以用下面方法进行 前提要先确定签名文件所在的路径&#xff1a;调试版默认使用的签名文件是debug.keystore&#xff0c;文件处于 C 盘用户目录下的.android文件夹下。打开命令行工具&#xff0c; 1、…

CentOS 7 构建 LVS-DR 群集 nginx负载均衡

1、基于 CentOS 7 构建 LVS-DR 群集。 DS&#xff08;Director Server&#xff09;&#xff1a;DIP 192.168.231.132 & VIP 192.168.231.200 [root132 ~]# nmcli c show NAME UUID TYPE DEVICE ens33 c89f4a1a-d61b-4f24-a260…