【数模】聚类模型

  • 分类和聚类
    • 分类:最终类别是确认的,把各样本分到已有的类别中
    • 聚类:最终类别是未知的,把所有样本划分出最终类别

一、K-means聚类算法

1.1 K-means算法了解

  • 算法流程(推荐使用流程图:更简洁,且能降低查重)

    • 流程图绘制:亿图、PPT、Visio等软件均可在这里插入图片描述
  • 图解在这里插入图片描述

  • K-均值聚类可视化

1.2 K-means算法评价

  • 优点:
    • ①算法简单、快速。
    • ②对处理大数据集,该算法是相对高效率的。
  • 缺点:
    • ①要求用户必须事先给出要生成的簇的数目K。
    • ②对初值敏感。
    • ③对于孤立点数据敏感。
    • ( ②和③能采用K-means++解决)

二、K-means++算法

2.1 K-means++算法了解

  • 选择初始聚类中心的基本原则是:初始的聚类中
    心之间的相互距离要尽可能的远。
  • 算法流程:
    • (只对K-means算法“初始化K个聚类中心” 这一步进行了优化)
    • 步骤一:随机选取一个样本作为第一个聚类中心;
    • 步骤二:计算每个样本与当前已有聚类中心的最短距离(即与最近一个聚类中心的距离),这个值越大,表示被选取作为聚类中心的概率较大;最后,用轮盘法(依据概率大小来进行抽选)选出下一个聚类中心;
    • 步骤三:重复步骤二,直到选出K个聚类中心。选出初始点后,就继续使用标准的K-means算法了。

2.2 Spss实现K-means++

  • 导入数据后的具体操作( 选中K-均值聚类,默认使用的就是K‐means++算法)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 分析结果:
    • ①聚类的结果在这里插入图片描述
    • ②分成k类后,k个聚类中心的距离在这里插入图片描述
    • ③各聚类中样本数在这里插入图片描述

2.3 K-means算法的一些讨论

  • ①聚类的个数K值怎么定?
    • 答:分几类主要取决于个人的经验与感觉,通常的做法是多尝试几个K值,看分成几类的结果更好解释,更符合分析目的等。
    • 例如:对消费群体分类,两类和三类都可以,因为分成两类可解释为高消费和低消费;分成三类可解释为高消费、中等消费和低消费。
  • ②数据的量纲不一致怎么办?
    • 答:如果数据的量纲不一样,那么算距离时就没有意义。
    • 例如:如果X1单位是米,X2单位是吨,用距离公式计算就会出现“米的平方”加上“吨的平方”再开平方,最后算出的东西没有数学意义,这就有问题了。
    • 处理方式:在这里插入图片描述
      在这里插入图片描述
      如下生成的描述性表格可放在论文中
      在这里插入图片描述
      在这里插入图片描述

三、系统/层次聚类

  • K-means聚类和K-means++聚类都需要实现人为设定最终聚类数,系统聚类则无需此步。
  • 系统聚类的合并算法通过计算两类数据点间的距离,对最为接近的两类数据点进行组合,并反复迭代这一过程,直到将所有数据点合成一类,并生成聚类谱系图。
  • (本节参考辽宁石油化工大学的教学pdf)
    在这里插入图片描述

3.1 样品与样品之间的常用距离(样品i与样品j)

  • 适用情况:在这里插入图片描述
  • 公式:
    • 网格路径常用绝对值距离
    • 其余常用欧氏距离
      在这里插入图片描述
  • 举例:
    在这里插入图片描述

3.2 指标与指标之间的常用“距离”(指标i与指标j)

  • 很少会有需要对指标进行分类的题目

  • 适用情况:在这里插入图片描述

  • 公式:
    在这里插入图片描述

  • 举例
    在这里插入图片描述

3.3 类与类之间的常用距离

  • 适用情况:在这里插入图片描述

  • 1.由一个样品组成的类是最基本的类;如果每一类都由一个样品组成,那么样品间的距离就是类间距离。

  • 2.如果某一类包含不止一个样品,那么就要确定类间距离,类间距离是基于样品间距离定义的,大致有如下几种定义方式:

    • 默认的是重心法;
    • 在系统聚类中组间和组内用的相对较多;
    • (聚类方法选择都是多样的,只要能把模型解释得通即可)在这里插入图片描述
① 最短距离法

在这里插入图片描述

② 最长距离法

在这里插入图片描述

③ 组间平均连接法

在这里插入图片描述

④ 组内平均连接法在这里插入图片描述
⑤ 重心法

在这里插入图片描述

3.4 系统聚类过程

  • 论文不能直接使用下图,要自己有所改动(形式与内容表述等)
  • 系统(层次)聚类的算法流程:
    • ① 将每个对象看作一类,计算两两之间的最小距离;
    • ② 将距离最小的两个类合并成一个新类;
    • ③ 重新计算新类与所有类之间的距离;
    • ④ 重复二三两步,直到所有类最后合并成一类;
    • ⑤ 结束。

在这里插入图片描述

3.5 完整解题过程

【题目】
  • 根据五个学生的六门课的成绩,对这五个学生进行分类
    在这里插入图片描述
【解法一:采用最短距离系统聚类法】
  • (1)计算过程

    • 1.写出样品间的距离矩阵(以欧氏距离为例)在这里插入图片描述
    • 2.将每一个样品看做是一个类,即G1,G2,G3,G4,G5,观察D(G1,G5)=15.8最小,故将G1与G5聚为一类,记为G6。计算新类与其余各类之间的距离,得到新的距离矩阵D1在这里插入图片描述
      在这里插入图片描述
    • 3.观察D(G2,G4)=15.9最小,故将G2与G4聚为一类,记为G7。计算新类与其余各类之间的距离,得到新的距离矩阵D2在这里插入图片描述在这里插入图片描述
    • 4.观察D(G6,G7)=18.2最小,故将G6与G7聚为一类,记为G8。计算新类与其余各类之间的距离,得到新的距离矩阵D3
      在这里插入图片描述
    • 5.最后将G8与G3聚为一类,记为G9
  • (2)聚类的谱系图(树状图)
    在这里插入图片描述

【解法二:采用最长距离系统聚类法】
  • (1)计算过程

    • 1.写出样品间的距离矩阵(以欧氏距离为例)
      在这里插入图片描述
      2.将每一个样品看做是一个类,即G1,G2,G3,G4,G5,观察D(G1,G5)=15.8最小,故将G1与G5聚为一类,记为G6。计算新类与其余各类之间的距离,得到新的距离矩阵D1
      在这里插入图片描述
    • 3.观察D(G2,G4)=15.9最小,故将G2与G4聚为一类,记为G7。计算新类与其余各类之间的距离,得到新的距离矩阵D2
      在这里插入图片描述
    • 4.观察D(G3,G7)=32.4最小,故将G3与G7聚为一类,记为G8。计算新类与其余各类之间的距离,得到新的距离矩阵D3在这里插入图片描述
    • 5.最后将G8与G6聚为一类,记为G9
  • (2)聚类的谱系图(树状图)在这里插入图片描述

【其他解法】
  • 组间平均连接系统聚类法
  • 重心系统聚类法
  • 组内平均连接系统聚类法
  • 注:这些方法的差别就是在计算新类与其余各类间的距离,只要能解释的通都可以用。

3.6 聚类分析需要注意的问题

  1. 对于一个实际问题要根据分类的目的来选取指标,指标选取的不同分类结果一般也不同。
  2. 样品间距离定义方式的不同,聚类结果一般也不同。
  3. 聚类方法的不同,聚类结果一般也不同(尤其是样品特别多的时候)。最好能通过各种方法找出其中的共性。
  4. 要注意指标的量纲,量纲差别太大会导致聚类结果不合理。
  5. 聚类分析的结果可能不令人满意,因为我们所做的是一个数学的处理,对于结果我们要找到一个合理的解释。

3.7 系统聚类的Spss软件操作

  • 具体操作
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 结果分析
    • 谱系图是较新的Spss版本添加的功能:横轴表示各类之间的距离(该距离经过了重新标度);聚类的个数可以自己从图中决定。
    • Spss结果中还有一种图,被称为冰柱图,目前已经很少用了。
      在这里插入图片描述
      分类数推荐≤5类(再多不便于解释)
      在这里插入图片描述

3.8 用图形估计聚类的数量

  • 肘部法则(Elbow Method):通过图形大致的估计出最优的聚类数量。

在这里插入图片描述

聚合系数折线图的画法
  • ① 将Spss中系数列复制到新建Excel表中,并排降序
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • ② 构建图表
    在这里插入图片描述
    在这里插入图片描述

  • ③解释图表

    • (1) 根据聚合系数折线图可知,当类别数为5时,折线的下降趋势趋缓,故可将类别数设定为5.
    • (2) 从图中可以看出, K值从1到5时,畸变程度变化最大。超过5以后,畸变程度变化显著降低。因此肘部就是 K=5,故可将类别数设定为5.(K=3也可以解释,因为3到4的下降幅度也较平缓)
    • (哪种好解释采用哪种)
  • ④确定K后保存聚类结果并画示意图

    • 示意图说明:只有当指标个数为2或者3的时候才能画图在这里插入图片描述

    • 生成k(下图为3)个分类后,在论文中要对该k个分类进行解释(为什么分成这3类)
      在这里插入图片描述

    • 图表构建
      在这里插入图片描述

    • 设置横纵轴标签
      在这里插入图片描述

    • 设置点标签
      在这里插入图片描述
      在这里插入图片描述

    • 修改图的样式
      在这里插入图片描述
      在这里插入图片描述

    • 最后直接复制即可
      在这里插入图片描述


四、DBSCAN算法

4.1 DBSCAN算法基本概念

  • K-means聚类和层次聚类是基于距离的聚类方法;本节的DBSCAN算法是基于密度的聚类算法
  • DBSCAN算法聚类前不需要预先指定聚类的个数,生成的簇的个数不定(和数据有关)。
    • 该算法利用基于密度的聚类的概念,即要求聚类空间中的一定区域内所包含对象(点或其他空间对象)的数目不小于某一给定阈值。→ “谁和我挨的近,我就是谁兄弟;兄弟的兄弟,也是我的兄弟”
    • 优点:该方法能在具有噪声的空间数据库中发现任意形状的簇,可将密度足够大的相邻区域连接,能有效处理异常数据。
    • DBSCAN算法可视化
      在这里插入图片描述

4.2 分类

  • 核心点(下图红点):在半径Eps内含有不少于MinPts数目的点
  • 边界点(下图黄点):在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内
  • 噪音点(下图蓝点):既不是核心点也不是边界点的点
    在这里插入图片描述

4.3 Matlab代码

  • Matlab官网推荐下载的代码
% Copyright (c) 2015, Yarpiz (www.yarpiz.com)
% All rights reserved. Please read the "license.txt" for license terms.
%
% Project Code: YPML110
% Project Title: Implementation of DBSCAN Clustering in MATLAB
% Publisher: Yarpiz (www.yarpiz.com)
%
% Developer: S. Mostapha Kalami Heris (Member of Yarpiz Team)
%
% Contact Info: sm.kalami@gmail.com, info@yarpiz.com

4.4 优缺点

  • 优点:

    1. 基于密度定义,能处理任意形状和大小的簇;
    2. 可在聚类的同时发现异常点;
    3. 与K-means比较起来,不需要输入要划分的聚类个数。
  • 缺点:

    1. 对输入参数ε和Minpts敏感,确定参数困难;
    2. 由于DBSCAN算法中,变量ε和Minpts是全局唯一的,当聚类的密度不均匀时,聚
      类距离相差很大时,聚类质量差;
    3. 当数据量大时,计算密度单元的计算复杂度大。
  • 清风老师的建议:

    • 只有两个指标,且你做出散点图后发现数据表现得很“DBSCAN”(有形状),这时候再用DBSCAN进行聚类。
    • 其他情况下,全部使用系统聚类(K‐means也可以用,不过用了的话论文上可写的东西比较少)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis引出的一系列问题-JDBC 的探究

1 引入对JDBC的理解-1 一般来说,Java应用程序访问数据库的过程是: 装载数据库驱动程序;通过jdbc建立数据库连接;访问数据库,执行sql语句;断开数据库连接。 Public void FindAllUsers(){//1、装载sqlserve…

synchronized总结

目录 一、synchronized的特性 1.1 原子性 1.2 可见性 1.3 有序性 1.4 可重入性 二、synchronized的使用 2.1 修饰普通方法 2.2 修饰静态方法 2.3 修饰代码块 三、synchronized的锁机制 3.1 偏向锁 3.2 轻量级锁 3.3 重量级锁 一、synchronized的特性 1.1 原子性 原子性是指一…

Eclipse进行debug

目录 基本步骤三种执行方式 -- 键盘快捷键variables面板移除debug过的项目通过eclipse调用具有软件界面的项目进行debug各个variable颜色具有的意义 基本步骤 点击eclipse右上角debug按钮 调出debug面板 点击小蜘蛛图标(不是点绿色三角的Run) 此时会进…

华为流程体系:流程架构「OES方法」

目录 内容简介 OES方法 端到端的流程 专栏列表 CSDN学院 作者简介 内容简介 今天继续来谈谈华为流程体系中的流程架构。 在前期的内容已经介绍过 POS 流程架构的方法。 这里就先回顾一下 POS 方法的相关内容: 关于 POS,大家可以参看上面的这张图…

实现天气预报走势图

实现效果: 这里我用的天气接口是网上开源的,可以自己找一下。 稍微简单封装了一下axiso以及接口 封装的axios: // import { useUserStore } from /stores/user import axios from axios import router from /router import { ElMessage } f…

Nginx 高性能内存池 ----【学习笔记】

跟着这篇文章学习: c代码实现一个高性能内存池(超详细版本)_c 内存池库_linux大本营的博客-CSDN博客https://blog.csdn.net/qq_40989769/article/details/130874660以及这个视频学习: nginx的内存池_哔哩哔哩_bilibilihttps://w…

go逆向符号恢复

前言 之前一直没怎么重视,结果发现每次遇到go的题都是一筹莫展,刷几道题练习一下吧 准备 go语言写的程序一般都被strip去掉符号了,而且ida没有相关的签名文件,没办法完成函数名的识别与字符串的定位,所以第一步通常…

C语言经典小游戏之三子棋(超详解释+源码)

“纵有疾风来,人生不言弃,风乍起,合当奋意向此生。” 今天我们一起来学习一下三子棋小游戏用C语言怎么写出来? 三子棋小游戏 1.游戏规则介绍2.游戏准备3.游戏的实现3.1生成菜单3.2游戏的具体实现3.2.1初始化棋盘3.2.2打印棋盘3.2…

TypeScript【enum 枚举】

导语 在 TypeScript 中,新增了很多具有特性的一些数据类型处理方法,enum 【枚举】就是其中,很具有代表性的一种,所以本章节就来聊聊 在 TypeScript 中如何去运用 enum 【枚举】。 枚举的概念: 枚举(Enum&am…

机器学习基础08-模型选择02-分类算法矩阵(基于Pima 数据集)

算法评估矩阵(Algorithm Evaluation Metrics)用于评估机器学习算法在特定任务上的性能。不同的任务可能会使用不同的评估矩阵,因为每个任务的优劣衡量标准都不同。 分类算法矩阵 分类问题或许是最常见的机器学习问题,并且有多种评…

【算法心得】C++map用不着map.find(arr[j])!=map.end();js的map是map不是哈希;编译器选GNU

https://leetcode.com/problems/count-of-range-sum/ https://vjudge.csgrandeur.cn/problem/CodeForces-459D 这两题都是线段树,很明显的单点修改区间查询 leetcode那题我觉得map用hashmap就行,但是好像js里没有hashmap,那就 Map() 也行吧…

vue、uniapp直传阿里云文档

前端实现文件上传到oss(阿里云)适用于vue、react、uni-app,获取视频第一帧图片 用户获取oss配置信息将文件上传到阿里云,保证了安全性和减轻服务器负担。一般文件资源很多直接上传到服务器会加重服务器负担此时可以选择上传到oss&…

SpringCloudAlibaba之Sentinel(一)流控篇

前言: 为什么使用Sentinel,这是一个高可用组件,为了使我们的微服务高可用而生 我们的服务会因为什么被打垮? 一,流量激增 缓存未预热,线程池被占满 ,无法响应 二,被其他服务拖…

阿里云容器服务助力极氪荣获 FinOps 先锋实践者

作者:海迩 可信云评估是中国信息通信研究院下属的云计算服务和软件的专业评估体系,自 2013 年起历经十年发展,可信云服务评估体系已日臻成熟,成为政府支撑、行业规范、用户选型的重要参考。 2022 年 5 月国务院国资委制定印发《…

Linux 快速创建桌面图标

在安装 tar.gz 这类型压缩文件时,通常启动文件是.sh文件。文章主要记录快速添加到桌面图标。 1、解压 tar -zxvf XXX.tar.gz 2、创建桌面图标文件 touch XXX.desktop 3、文件中配置 [Desktop Entry] NameXXX CommentZZZ Exec/软件可执行文件所在目录/可执行文…

SpringBoot核心内容梳理

1.SpringBoot是什么? Spring Boot是一个基于Spring框架的快速开发应用程序的工具。它简化了Spring应用程序的创建和开发过程,使开发人员能够更快速地创建独立的、生产就绪的Spring应用程序。它采用了“约定优于配置”的原则,尽可能地减少开发人员需要进…

为代码生成一个良好可读的API文档-Doxygen简单实战

需求?为什么要有API文档 在代码开发过程中,我们会发现有这样的情况,其他团队的代码和自己团队的代码相异甚大,如果没有一个统一规范的文档来对接,会造成很多交流沟通上的不便,但我们又不想浪费时间去边写说…

C++STL——map/multimap容器详解

纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 一.对组(pair)二.map/multimap基本概念三.map容器常用操作①map构造函数②map迭代器获取③map赋值操作④map大小操作⑤map…

转录组下游分析 | 懒人分析推荐

写在前面 今天在GitHub看到一个博主写的RNASeqTool的ShinApp,里面包含了PCA、DESeq2、volcano、NormEnrich、GSEA、Gene tred analysis和WGCNA分析。使用后还是很方便的,就此推荐给大家。感兴趣可以自己操作即可。 GitHub网址 https://github.com/Cha…

C++、python双语言弹窗教程与对比

Messagebox弹窗 MessageBox指的是显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。消息框中返回一个整数值,该值指示用户单击了哪个按钮。 例子: 本文介绍了用C、Pytho…