数学建模学习笔记(九)——聚类模型

文章目录

    • 一、聚类综述
    • 二、主要用到的聚类算法
    • 三、K-means聚类算法
    • 四、K-means++算法
    • 五、对于K-means算法和K-means算法的讨论
    • 六、系统(层次)聚类算法
    • 七、DBSCAN算法
    • 八、总结

一、聚类综述

聚类的主要目的就是将样本划分为由类似的对象组成的多个类的过程。进行聚类后,我们可以在每个类中使用统计模型进行数据分析或者在不同类之间进行相关性探究。

聚类模型和分类模型的区别:

  1. 聚类模型是未知类别的,目的是要确定类别来对样本数据进行分类;
  2. 分类模型的类别是已知的,只需将严格样本数据分类到对应的类别中即可。

二、主要用到的聚类算法

  1. K-means聚类算法
  2. K-means++聚类算法
  3. 系统(层次)聚类算法
  4. DBSCAN算法

三、K-means聚类算法

算法步骤:

  1. 指定需要划分的 KKK 个簇(即要划分成的类的个数)
  2. 随机选取 KKK 个数据对象作为初始的聚类中心**(注意:这里选取的聚类中心不一定是样本点)**
  3. 计算其余的各个数据对象到这 KKK 个初始聚类中心的距离,把数据对象划归到距离它最近的那个中心所在的簇中。
  4. 调整新类并且重新计算出新类的中心**(确定新类的中心的方法类似于求重心)**
  5. 重复三、四步,直到中心不再需要调整。若不再需要调整或者达到最大迭代次数则停止。

如下面的流程图:
在这里插入图片描述
K-means算法的优点:
(1)算法简单便捷;
(2)对于大数据集,该算法效率较高;
K-mean算法的缺点:
(1)必须实现给出需要分得的类的数目 KKK
(2)对初始值非常敏感(初始分类中心不同,其分得的类也不同);
(3)对于孤立点的数据比较敏感;

因此,衍生出了K-means++算法来解决K-means算法带来的问题。

四、K-means++算法

算法步骤:(对聚类中心的选择进行了优化)
(1)随机选取一个样本作为第一个聚类中心;
(2)计算每个样本与最近的一个聚类中心的距离,这个值越大,表示被选取作为聚类中心的概率越大;最后,用轮盘法选取下一个聚类中心。
(3)重复第二步,直到选出 KKK 个聚类中心。
这些过程可以直接在SPSS中实现,并且SPSS使用的是K-means++算法

五、对于K-means算法和K-means算法的讨论

(1)确定 KKK 的值
聚类的目的就是将样本数据分为 KKK 个可以解释其意义的类。因此最好的方法就是去几个不同的 KKK 值,选取其中最好解释的那个 KKK 值即可。
(2)量纲对于聚类的影响
为了排除量纲对于聚类的影响,可以首先进行去量纲处理(标准化)。标准化公式:zi=xi−xˉσxz_i = \frac{x_i - \bar{x}}{\sigma_x}zi=σxxixˉ 其中,xˉ\bar{x}xˉ 是样本的均值,σx\sigma_xσx 是样本的标准差。

六、系统(层次)聚类算法

  1. 算法核心
    计算两类数据点之间的距离,对最为接近的两类数据进行合并,反复进行直到合成一类,最终生成聚类系谱图。
  2. 算法步骤:
    1. 将每个对象单独看作一类,计算两两之间的最小距离;
    2. 将距离最小的两个类合并成一类新类;
    3. 重新计算这个新类与所有类之间的距离;
    4. 重复第二步和第三步,直到所有类合并成一类;

算法流程图如下:在这里插入图片描述
3. 解决问题
可以在SPSS中调用命令,可得结果为:
在这里插入图片描述
由图可得,具体的聚类个数可以从图中决定。

七、DBSCAN算法

  1. 算法简要叙述:
    1. 指定半径 EpsEpsEps 和 最小包围的点的数目 MinPtsMinPtsMinPts

    2. 指定初始点 AAA,以 AAA 为圆心,EpsEpsEps 为半径作圆,在该圆内有不少于 MinPtsMinPtsMinPts 个点,则具有这样的特征的点是一个类;(注意:若有点在 AAA 圆内,但是以这个点作的圆不包围 MinPtsMinPtsMinPts 个点,它是不属于 AAA 类的哦~~~)

      可以参考这个图:
      在这里插入图片描述

  2. DBSCAN算法实现
    DBSCAN算法可以由Matlab实现,可以去官网下载:https://ww2.mathworks.cn/matlabcentral/fileexchange/52905‐dbscan‐clustering‐algorithm

八、总结

  1. 确定指标数量;
  2. 做出散点图判断可以使用哪种算法;
    建议:
    (1)如果只有两个指标,而且这两个指标作出的散点图很有形状,那么可以使用DBSCAN进行聚类
    (2)其他情况建议系统聚类(K-means算法可写的东西太少)
  3. 根据算法进行聚类;
  4. 对得出的结果进行解释(一定要选取适当的便于解释的 KKK 值哦~~~)

如果有什么错误,请一定告诉我哈~~~请添加图片描述

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

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

相关文章

python基础入门(2)

目录 一、Python数据类型 1)置数据类型 2)获取数据类型 3)设置数据类型 4)设置特定数据类型 6)练习题 二、python数字- 1)整数 2)浮点数 3)虚数 4)类型转换 …

C语言scanf:获取输入的内容

获取外部输入数据内容 在C语言中,有多个函数可以从键盘获得用户输入: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。getchar()、getche()、getch():这三个函数都用于输入单个字符。gets():获…

数学建模学习笔记(十)——时间序列模型

文章目录一、时间序列综述二、时间序列数据以及基本概念三、时间序列分解四、指数平滑模型五、一元时间序列分析的模型六、AR(p)模型七、MA(q)模型八、ARMA(p, q)模型九、模型选择:AIC 和 BIC 准…

python基础入门(3)之字符串

目录 一、Python字符串 1.字符串基本使用 1)字符串理解 2)将字符串分配给变量 3)多行字符串 4)字符串是数组 5)遍历字符串 6)字符串长度 7)检查字符串 8)检查如果不是 2.切片字符串 1)切片 2)从头开始切片 3)切到最…

数学建模学习笔记(十一)——预测模型

文章目录一、综述二、灰色预测简介三、GM(1, 1)模型四、使用灰色系统建模的前提 —— 准指数规律检验五、对于GM(1, 1)的检验六、GM(1, 1)模型的拓展七、什么时候使用灰色预测八、神经网络模型一、综述 本文首先介绍了灰色预测模…

python基础入门(4)之布尔值

目录 一、Python布尔值 1)比较 2)评估值和变量 3)布尔真值 4)布尔假值 5)函数可以返回布尔值 6)练习题 一、Python布尔值 布尔值表示两个值之一: True或False。在编程中,您经常需要知道表达式是否为 True或False。举一些例子就明白了。 1)比较 当…

C语言if else语句详解

前面我们看到的代码都是顺序执行的,也就是先执行第一条语句,然后是第二条、第三条……一直到最后一条语句,这称为顺序结构。 但是对于很多情况,顺序结构的代码是远远不够的,这时我们就要使用判断语句即if else语句。 …

数学建模学习笔记(十二)——奇异值分解

文章目录一、综述二、奇异值分解三、使用SVD进行降维四、SVD的评价及应用一、综述 奇异值分解是线性代数中一种重要的矩阵分解方法,它在图形的压缩等方面具有重要的意义及作用。 二、奇异值分解 三个引理: AB 和 BA 非零的特征值完全相同;…

python基础入门(5)之运算符

目录 一、python运算符 1)算术运算符 2)赋值运算符 一、python运算符 1)算术运算符 自己赋值粘贴运行下就懂了! 加减法:( -) a2 b3 ca-b da-b print(c,d)乘除法:(* /) a(50-5*6)/4 print(…

Python实例 61,62

61.题目:打印出杨辉三角形 程序设计: 第一步:先找规律,抽象化问题: 首先我们观察到,第一行为[1],我们直接赋给一个变量:初始化数列 p [1] 其次我们观察到,下面的每一…

C语言逻辑运算符详解

情景模式&#xff1a;现在研发出了一款新的软件&#xff0c;要求使用者必须成年&#xff0c;并且成绩大于等于60&#xff0c;该怎么办呢&#xff1f; 或许你会想到使用嵌套的 if 语句&#xff0c;类似下面这样的代码&#xff1a; #include <stdio.h> int main() {int a…

Python实例 63,64

目录 63.题目&#xff1a;画椭圆 1.tkinter画椭圆 2.turtle画椭圆 64.题目&#xff1a;利用ellipse 和 rectangle 画图 63.题目&#xff1a;画椭圆 1.tkinter画椭圆 #63 from tkinter import * x 360 y 160 top y - 30 bottom y - 30canvas Canvas(width 500,height …

HTML学习笔记(一)

HTML5语法 文档类型 DOCTYPE声明文档类型 &#xff0c;必须位于第一行。 DOCTYPE不区分大小写以及单双引号。 DOCTYPE会触发浏览器以标准模式显示页面。 <!DOCTYPE HTML>字符编码 HTML5中简化了字符编码的写法&#xff0c;直接用 meta 即可 <meta charset "UTF-…

C++ PAT 乙级 1007——素数对猜想

题目详情 让我们定义 dnd_ndn​ 为 dnpn1−pnd_n p_{n 1} - p_ndn​pn1​−pn​&#xff0c;其中 pip_ipi​ 是第 i 个素数。显然有 d11d_1 1d1​1&#xff0c;且对于 n > 1有 dnd_ndn​ 是偶数。 “素数对猜想”认为“存在无穷多对相邻且差为2的素数”&#xff0c;现给…

python实例 65,66

65.题目&#xff1a;一个最优美的图案 #65 import math class PTS:def __init__(self):self.x 0self.y 0 points []def LineToDemo():import tkinter screenx 400screeny 400canvas Canvas(width screenx,height screeny,bg white)AspectRatio 0.85MAXPTS 15h scr…

C语言for循环详解

for 循环的使用更加灵活&#xff0c;在日常的程序开发过程中我们会使用的更多一些。 使用 while 循环来计算1加到100的值&#xff0c;代码如下&#xff1a; #include <stdio.h> int main(){int i, sum0;i 1; //语句①while(i<100 /*语句②*/ ){sumi;i; //语句③}…

python基础入门(6)之列表

目录 一、Python列表 一.列表基本知识 1)创建列表 2&#xff09;列出表值 3&#xff09;列表长度 4&#xff09;列表项 - 数据类型 5&#xff09;Python 集合&#xff08;数组&#xff09; 二.访问列表 1.正常索引 2)负索引 3)索引范围 4&#xff09;负指数范围 5…

山东大学 2020级数据库系统 实验一

What’s more? 山东大学 2020级数据库系统 实验一 山东大学 2020级数据库系统 实验二 山东大学 2020级数据库系统 实验三 山东大学 2020级数据库系统 实验四 山东大学 2020级数据库系统 实验五 山东大学 2020级数据库系统 实验六 山东大学 2020级数据库系统 实验七 山东大学 …

python基础入门(7)之元组

目录 Python元组 一、元组理解 1.1&#xff09;基本定义 1.2&#xff09;元组长度 1.3&#xff09;数据类型 二、访问元组 2.1&#xff09;正常访问 2.2&#xff09;负索引 2.3&#xff09;范围性索引 三、更新元组 3.1&#xff09;替换 ​3.2&#xff09;添加项目…

山东大学 2020级数据库系统 实验二

What’s more 山东大学 2020级数据库系统 实验一 山东大学 2020级数据库系统 实验二 山东大学 2020级数据库系统 实验三 山东大学 2020级数据库系统 实验四 山东大学 2020级数据库系统 实验五 山东大学 2020级数据库系统 实验六 山东大学 2020级数据库系统 实验七 山东大学 20…