8 常规聚类

news2024/11/19 15:12:56

常规聚类

聚类分析是解决数据全方位自动分组的有效方式。若将数据全体视为一个大类,这个大类很可能是由若干个包含了一定数量观测的自然小类”组成的。聚类分析的目的就是找到这些隐藏于数据中的客观存在的“自然小类”,并通过刻画“自然小类”体现数据的内在结构。

1 聚类分析概述

类是一组数据对象(或称观测)的集合,主要有以下几种:

  • 空间中距离较近的各观测点,可形成一个类。
  • 空间中观测点分布较为密集的区域,可视为一个类。
  • 来自某特定统计分布的一组观测,可视为一个类。

从聚类结果角度,主要有以下几种:

  • 确定聚类和模糊聚类。如果任意两个类的交集为空,一个观测点最多只属于一个确定的类,称为确定聚类(或硬聚类) 。否则,如果一个观测点以不同概率水平属于所有的类,称为模糊聚类(或软聚类)。

  • 基于层次的聚类和非层次的聚类。如果类之间存在一个类是另一个类的子集的情况称为层次聚类; 否则为非层次聚类。

从聚类算法(也称聚类模型)角度,主要有如下几种:

  • 从反复寻找类质心角度设计算法。这类算法以质心为核心, 视空间中距质心较近的多个观测点为一个类。得到的聚类结果一般为确定性的,且不具有层次关系。
  • 从距离和联通性角度设计算法。这类算法视空间中距离较近的多个观测点为一个类,并基于联通性完成最终的聚类。得到的聚类结果一般为确定性的,且具有层次关系
  • 从统计分布角度设计算法。视来自某特定统计分布的多个观测为一个类,认1个类是来自一个分布的随机样木。得到的聚类结果一般有不确定性,且不具有层次关系。

2 K-means聚类

K-Means 聚类也称快速聚类从反复寻找类质,心角度设计算法。这类算法以质心为核心,视空间中距质心较近的多个观测点为一个类,得到的聚类结果一般为确定性的且不具有层次关系。此外,需事先确定聚类数目K。

2.1 聚类过程:多次自动分组

K-Means 聚类算法要求事先确定聚类数目K,并采用分割方式实现聚类。所谓分割是指:首先,将样本空间随意分割成K 个区域对应K 个类,并确定K 个类的质心位置,即质心;然后,计算各个观测点与K 个质心的距离将所有观测点指派到与之最近的类中,形成初始的聚类结果。由于初始聚类结果是在空间随意分割的基础上产生的,元法确保所得的K 个类就是客观存在的“自然小类”,所以需多次反复。

具体过程如下:

  1. 指定聚类数目K

  2. 确定K 个初始类质心。指定聚类数目K 后,还应指定K 个类的初始类质心点。初始类质心点指定的合理性,将直接影响聚类算法收敛的速度。常用的初始类质心的指定方法如下:

    • 经验选择法,即根据以往经验大致了解样本应聚成几类以及如何聚类,只需要选择每个类中具有代表性的观测点作为初始类质心即可。
    • 随机选择法,即随机指定K 个样本观测点作为初始类质心。
    • 最小最大法,即先选择所有观测点中相距最远的两个点作为初始类质心,然后选择第三个观测点,它与已确定的类质心的距离是其余点中最大的。然后按照同样的原则选择其他类质心。
  3. 根据最近原则进行聚类。

  4. 重新确定K 个类质心。

  5. 判断是否已经满足终止聚类算法的条件:如果没有满足, 则返回到第三步,不断反复上述过程,直到满足选代终止条件。

2.2 K-means聚类的R语言实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CqjQp6Wz-1670126068913)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221020211200447.png)]

#####################K-Means聚类应用
PoData<-read.table(file="环境污染数据.txt",header=TRUE, fileEncoding = 'GBK')
CluData<-PoData[,2:7]
#############K-Means聚类
set.seed(12345)
CluR<-kmeans(x=CluData,centers=4,iter.max=10,nstart=30)
CluR$size
CluR$centers

###########K-Means聚类结果的可视化 
par(mfrow=c(2,1))
PoData$CluR<-CluR$cluster
plot(PoData$CluR,pch=PoData$CluR,ylab="类别编号",xlab="省市",main="聚类的类成员",axes=FALSE)
par(las=2)
axis(1,at=1:31,labels=PoData$province,cex.axis=0.6)
axis(2,at=1:4,labels=1:4,cex.axis=0.6)
box()
legend("topright",c("第一类","第二类","第三类","第四类"),pch=1:4,cex=0.6)
###########K-Means聚类特征的可视化
plot(CluR$centers[1,],type="l",ylim=c(0,82),xlab="聚类变量",ylab="组均值(类质心)",main="各类聚类变量均值的变化折线图",axes=FALSE)
axis(1,at=1:6,labels=c("生活污水排放量","生活二氧化硫排放量","生活烟尘排放量","工业固体废物排放量","工业废气排放总量","工业废水排放量"),cex.axis=0.6)
box()
lines(1:6,CluR$centers[2,],lty=2,col=2)
lines(1:6,CluR$centers[3,],lty=3,col=3)
lines(1:6,CluR$centers[4,],lty=4,col=4)
legend("topleft",c("第一类","第二类","第三类","第四类"),lty=1:4,col=1:4,cex=0.6)

###########K-Means聚类效果的可视化评价
CluR$betweenss/CluR$totss*100
par(mfrow=c(2,3))
plot(PoData[,c(2,3)],col=PoData$CluR,main="生活污染情况",xlab="生活污水排放量",ylab="生活二氧化硫排放量")
points(CluR$centers[,c(1,2)],col=rownames(CluR$centers),pch=8,cex=2)
plot(PoData[,c(2,4)],col=PoData$CluR,main="生活污染情况",xlab="生活污水排放量",ylab="生活烟尘排放量")
points(CluR$centers[,c(1,3)],col=rownames(CluR$centers),pch=8,cex=2)
plot(PoData[,c(3,4)],col=PoData$CluR,main="生活污染情况",xlab="生活二氧化硫排放量",ylab="生活烟尘排放量")
points(CluR$centers[,c(2,3)],col=rownames(CluR$centers),pch=8,cex=2)

plot(PoData[,c(5,6)],col=PoData$CluR,main="工业污染情况",xlab="工业固体废物排放量",ylab="工业废气排放总量")
points(CluR$centers[,c(4,5)],col=rownames(CluR$centers),pch=8,cex=2)
plot(PoData[,c(5,7)],col=PoData$CluR,main="工业污染情况",xlab="工业固体废物排放量",ylab="工业废水排放量")
points(CluR$centers[,c(4,6)],col=rownames(CluR$centers),pch=8,cex=2)
plot(PoData[,c(6,7)],col=PoData$CluR,main="工业污染情况",xlab="工业废气排放总量",ylab="工业废水排放量")
points(CluR$centers[,c(5,6)],col=rownames(CluR$centers),pch=8,cex=2)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b45Ta2sO-1670126068914)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221020212012856.png)]

3 PAM聚类

3.1 PAM聚类概述

PAM 聚类与K-Means 聚类的主要不同在于:

  • 距离测度采用绝对距离,聚类目标是找到类内绝对距离之和最小下的类;
  • 增加了判断本次迭代类质心合理性的步骤。

实现步骤如下:

  1. 指定聚类数目K。

  2. 采用经验法或随机选择法确定K个初始类质心

  3. 根据最近原则进行聚类。

  4. 重新确定K 个类质心

    • 分别计算K 个类的质心点,即依次计算各类中所有观测点在各个变盘上的均值,并以均值点作为新的类质心点,记为uk

    • 对于第k 类,对每个非质心观测点x’k :计算类内其他观测与xik 的距离之和,也称总代价( Total Cost )。找到最小总代价。若最小总代价小于Uk 的总代价,则第k 类的新质心调整为最小总代价对应的X

  5. 判断是否已经满足终止聚类算法的条件,如果没有满足,则返回到第三步,不断反复上述过程,直到满足迭代终止条件

3.2PAM聚类的R语言实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YDfiN3Xx-1670126068915)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221021115710441.png)]

#################PAM聚类
set.seed(12345)
library("cluster")
set.seed(12345)
(PClu<-pam(x=mydata[,-1],k=3,do.swap=TRUE,stand=FALSE)) 
plot(x=PClu,data=mydata)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G5U9sqfE-1670126068916)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221021120207500.png)]

4 层次聚类

层次聚类也称系统聚类,从距离和联通性角度设计算法。这类算法视空间中距离较近的多个观测点为一个类,并基于联通性完成最终的聚类。得到的聚类结果一般为确定性的且具有层次关系。

4.1 层次聚类的基本过程

层次聚类是将各个观测逐步合并成小类,再将小类逐步合并成中类乃至大类的过程

  • 首先,每个观测点自成一类。

  • 然后,计算所有观测点彼此间的距离,并将其中距离最近的观测点聚成一个小类,形成n -1 个类

  • 再次度量剩余观测点和小类间的距离,并将当前距离最近的观测点或小类再聚成一类。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tgGhlDGr-1670126068916)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221021120449754.png)]

4.2 层次聚类的R语言实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RWs82ODp-1670126068917)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221021120625217.png)]

################层次聚类
DisMatrix<-dist(mydata[,-1],method="euclidean")
CluR<-hclust(d=DisMatrix,method="ward.D")

###############层次聚类的树形图
plot(CluR,labels=mydata[,1])
box()
###########层次聚类的碎石图
plot(CluR$height,62:1,type="b",cex=0.7,xlab="距离测度",ylab="聚类数目")

######取3类的聚类解并可视化
par(mfrow=c(2,1))
mydata$memb<-cutree(CluR,k=3)
table(mydata$memb)
plot(mydata$memb,pch=mydata$memb,ylab="类别编号",xlab="纹饰",main="聚类的类成员",axes=FALSE)
par(las=2)
axis(1,at=1:63,labels=mydata$纹饰,cex.axis=0.6)
axis(2,at=1:3,labels=1:3,cex.axis=0.6)
box()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cKSW6jof-1670126068918)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221021121255986.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sf0NpHPz-1670126068918)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221021121305330.png)]

5 EM聚类

5.1 基于统计分布的聚类出发点:有限混合分布

基于统计分布的聚类模型,从统计分布的角度设计算法。这类算法的核心出发点是:如果样本数据存在“自然小类”,那么某小类所包含的观测来自于某个特定的统计分布。换句话说,一个“自然小类”是来自某个特定的统计分布的随机样本。于是,观测全体即是来自多个统计分布的有限混合分布的随机样本。

5.1.1 EM聚类的基本原理

以有限混合分布为出发点,基于统计分布的聚类模型的目标:找到各观测最可能属于的“自然小类”。

该问题的本质貌似是个极大似然估计问题。极大似然估计是一种在总体概率密度函数和完整的样本信息基础上,求解概率密度函数中未知参数估计值的方法。一般思路:在概率密度函数的基础上,构造一个包含未知参数的似然函数,并求解在似然函数值最大时未知参数的估计值。从另一角度看,该原则下得到的参数,在其所决定的总体中将有最大的概率观测到观测样本。因此,似然函数的函数值实际是一种概率值,取值在0 ~ 1 之间

EM聚类的难点在于:各成分参数未知,需要估计,而且各个观测的所属类别Z也未知,也就是说,样本信息是不完整的,无法直接采用极大似然估计方法。对此,需采用EM 算法求解。

5.1.2 EM 聚类中的聚类数目问题

一般情况下,聚类数目越大,对数似然函数越大。 聚类数目越少,对数似然函数越小。通常并不希望聚类数目过大,但此时似然函数值又较低。所以,兼顾聚类数目和对数似然函数,确定一个恰当的聚类数目是必要的。常用的判断依据是BIC 信息准则。

5.2 EM聚类的R语言实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l3uGdsva-1670126068918)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221021122910540.png)]

###################实例数据的EM聚类
library("mclust") 
EMfit<-Mclust(data=mydata[,-1])  
summary(EMfit)
plot(EMfit,"BIC")
plot(EMfit,"classification")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Ir8ukho-1670126068919)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221021123222130.png)]

18)]

###################实例数据的EM聚类
library("mclust") 
EMfit<-Mclust(data=mydata[,-1])  
summary(EMfit)
plot(EMfit,"BIC")
plot(EMfit,"classification")

在这里插入图片描述

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

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

相关文章

舆情监控软件

随着中国互联网的快速发展&#xff0c;舆情监测成为工作中的一部分&#xff0c;如果没有舆情监控软件的及时介入&#xff0c;负面舆情将会迅速扩大并蔓延到各个方面&#xff0c;对社会以及公众造成严重的影响&#xff0c;舆情监控软件对企业政府有着深远影响&#xff0c;接下来…

Python学习小组课程P5-Python办公(2)Excel读取与Word生成

一、前言 注意&#xff1a;此为内部小组学习资料&#xff0c;非售卖品&#xff0c;仅供学习参考。 本系列课程&#xff1a; Python学习小组课程-课程大纲与Python开发环境安装 Python学习小组课程P1-Python基础&#xff08;1&#xff09;语法与数组 Python学习小组课程P2-Pyth…

【配电网重构】基于yalmip求解含sop+二阶锥配电网重构附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

ouster-32激光雷达使用---雷达输出数据分析

ouster-32激光雷达使用---雷达输出数据分析雷达输出数据分析所有数据imu数据雷达数据坐标系Rviz显示雷达输出数据分析 所有数据 查看当前topic消息种类 rostopic list终端输出 /clicked_point /initialpose /move_base_simple/goal /os_node/imu_packets /os_node/lidar_pa…

ADSP-21489的开发详解:VDSP+自己编程写代码开发(2-软件和硬件的开发环境搭建)

Visual DSP软件的安装 运行 setup 软件安装包&#xff0c;全部下一步即可完成软件安装&#xff0c;非常简单。我们的资料里提供了 VDSP5.1.2 软件&#xff0c;当然您也可以通过 ADI 公司官网下载。 VDSP5.1.2 软件官网下载地址&#xff1a; Visual DSP5.1.2的ADI官网下载链接…

2022深入学习C++教程

2022深入学习C教程 课堂和实践课程 – C 11 的功能、异常处理和 STL – 适用于学术界和工业界 课程英文名&#xff1a;Learn C Programming -Beginner to Advance- Deep Dive in C 此视频教程共30.0小时&#xff0c;中英双语字幕&#xff0c;画质清晰无水印&#xff0c;源码…

Composer交互文档如何在PPT当中使用

在往期的公开课中我们讲解了SOLIDWORKS Composer这样一款三维制作软件&#xff0c;Composer可以很好的利用SOLIDWORKS所设计的数据自动生成产品手册、装配目录、维修说明&#xff0c;以及销售和培训视频等&#xff0c;还可以为用户提供非常满意的交互式体验。 并且Composer和S…

抖音怎么录屏?这个方法,亲测好用

​抖音是现在流行的短视频软件之一&#xff0c;很多小伙伴喜欢用它来记录生活&#xff0c;分享生活中新鲜有趣的事情。有时候&#xff0c;在抖音上看到了喜欢的视频&#xff0c;想要分享给好友&#xff0c;发现抖音无法分享&#xff0c;这个时候就需要使用到屏幕录制功能了。那…

【电力系统】含电热联合系统的微电网运行优化附matlab代码和复现论文

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

我国跨国企业外汇风险管理——以海尔公司为例

目 录 摘 要 I 一、 绪论 1 &#xff08;一&#xff09; 选题背景及意义 1 &#xff08;二&#xff09; 国内研究现状 1 1&#xff0e; 国外研究现状 1 2&#xff0e; 国内研究现状 3 &#xff08;三&#xff09; 研究内容及方法 3 &#xff08;四&#xff09; 跨国企业外汇风险…

C语言 字符串

C语言 字符串引言一、字符串的创建方式二、字符串函数1. strlen 函数使用示例1使用示例2模拟 strlen 函数2. strcpy 函数使用示例模拟 strcpy 函数3. strcat 函数使用示例模拟 strcat 函数4. strcmp 函数使用示例模拟 strcmp 函数5. strncpy、strncat、strncmp6. strstr 函数使…

STC 51单片机55——加速度计GY-29 ADXL345

//实现与VB模拟鼠标通信&#xff0c;但是噪声很大 //采用输出角度的方式&#xff0c;输出x与z的角度和y与z的角度 //在VB中将屏幕水平与垂直等分1800份&#xff08;角度*10得到的结果&#xff09; //*************************************** // GY-29 ADXL345 IIC测试程序 // …

VIVADO时序约束之时序例外(set_false_path)

前言 当FPGA设计中的逻辑行为不能满足默认的时序要求时&#xff0c;设计者需要使用时序例外语法对该逻辑行为进行处理&#xff0c;例如&#xff1a;有些结果只需每个一个或多个时钟周期捕获一次。 vivado开发工具支持4个时序例外约束的语法&#xff0c;如下表所示&#xff1a;…

html5播放器禁止拖拽功能实例(教学内容禁止拖动观看)

html5播放器禁止拖拽功能实例&#xff08;常用于场景&#xff1a;企业培训、在线教学内容禁止学员拖动视频进行观看&#xff09; 实例1&#xff1a;参数开启后&#xff0c;视频教学内容或视频课件将不允许拖动进度条。 <div id"player"></div> <scr…

MAC执行graalvm并编译

1.先下载 https://github.com/graalvm/graalvm-ce-builds/releases 解压后放到/Library/Java/JavaVirtualMachines 然后执行sudo xattr -r -d com.apple.quarantine path/to/graalvm/folder/ IDEA添加JDK就是这个包 然后这时候可以正常启动了 原项目启动7秒&#xff0c;用这…

[附源码]计算机毕业设计基于Springboot校园订餐管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

基于BP神经网络进行手写体识别(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 字符识别长期以来都是采用传统的识别方法, 对印刷体字符的识别率一般只是稳定在96%左右, 未能进一步提高, 而对手写体字符的识…

推荐一款语音识别软件

一、简介 使用接口转换需要输入的语音为文字。 给大家带来一款语音识别软件&#xff0c;想做智能识别语音设备或者想给项目增加功能的同学可以看下 这款软件是使用python写的&#xff0c;其实开发语言无所谓用其他语言也可以写 代码还是挺简单的。 这款软件主要使用接口完成识…

SWMM排水管网水力、水质建模及在海绵城市与水环境保护中的应用

随着计算机的广泛应用和各类模型软件的发展&#xff0c;将排水系统模型作为城市洪灾评价与防治的技术手段已经成为防洪防灾的重要技术途径。美国环保局的雨水管理模型&#xff08;SWMM&#xff09;&#xff0c;是当今世界最为著名的排水系统模型。SWMM能模拟降雨和污染物质经过…

基于树莓派开发板的智能家居系统的设计和实现

目 录 摘 要 I Abstract II 前 言 1 开发工具和技术简介 1 1.1 硬件工具简介 1 1.1.1树莓派2代B板简介 1 1.1.2 其他硬件模块 1 1.2 软件工具介绍 3 1.2.1 Qt 3 1.2.2 Espeak TTS 3 1.2.3 WiringPi 3 1.2.4 PuTTY 5 1.2.5 Win32 Disk Imager 5 1.2.6 SDFormatter4exe 5 1.3 系…