一篇文章告诉你聚类算法的作用和怎么用聚类算法!建议收藏!(下篇)

news2024/11/21 2:35:15

EM聚类

EM聚类 基于概率分布对数据进行建模,通过迭代的期望和最大化步骤来估计模型参数,并将数据分为不同的聚类。EM聚类通常用于处理混合分布的数据,其中每个聚类被建模为一个概率分布。

原理介绍

EM聚类的核心思想是将数据集中的每个样本视为来自于一个潜在的分布(通常是多元高斯分布)的观测结果。该算法迭代地执行两个步骤:

1、Expectation Step(E步骤):在这一步中,计算每个样本属于每个聚类的概率,即计算后验概率。这一步使用当前估计的模型参数(均值和协方差矩阵)来计算后验概率。

2、Maximization Step(M步骤):在这一步中,基于E步骤中计算得到的后验概率,更新模型的参数,包括均值和协方差矩阵,以使似然函数最大化。这一步是一个最大似然估计(MLE)步骤。

重复执行E步骤和M步骤,直到收敛或达到预定的迭代次数。

最终,每个样本将被分配到一个聚类中,同时模型的参数将收敛到使数据最可能的参数值。

公式表达

EM聚类的主要数学公式涉及多元高斯分布。假设有个聚类,每个聚类被建模为一个多元高斯分布:

1、多元高斯分布

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.mixture import GaussianMixture

# 生成一个随机的大型数据集
X, _ = make_blobs(n_samples=2000, centers=4, random_state=42)

# 使用EM聚类
gmm = GaussianMixture(n_components=4, random_state=42)
labels = gmm.fit_predict(X)

# 可视化结果
plt.figure(figsize=(8, 6))
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap="viridis")
plt.title("EM Clustering Result")
plt.show()

模糊聚类

模糊聚类与传统的硬聚类方法(如K均值)不同,它允许数据点属于多个不同的聚类,而不是仅属于一个确定的聚类。

模糊聚类通常使用模糊集合理论来描述数据点与聚类的隶属度(membership degree),因此也称为模糊C均值(Fuzzy C-Means,FCM)算法。

原理介绍

模糊聚类的目标是将数据点划分为多个模糊聚类,每个数据点可以与每个聚类关联一个隶属度,表示其属于该聚类的程度。这个隶属度通常在0到1之间,0表示不属于聚类,1表示完全属于聚类。

FCM的主要思想是最小化数据点与聚类中心之间的加权欧氏距离的平方,其中权重是隶属度的幂。这可以用以下公式表示:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_samples, silhouette_score, calinski_harabasz_score, davies_bouldin_score, adjusted_rand_score

from fcmeans import FCM

# 生成模拟数据
n_samples = 3000
n_features = 2
n_clusters = 4
X, y = make_blobs(n_samples=n_samples, n_features=n_features, centers=n_clusters, random_state=42)

# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 使用FCM进行模糊聚类
fcm = FCM(n_clusters=n_clusters)
fcm.fit(X_scaled)

# 获取聚类标签
fuzzy_labels = np.argmax(fcm.u, axis=1)

# 绘制模糊聚类结果
plt.figure(figsize=(10, 6))
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=fuzzy_labels, cmap='viridis', s=50, alpha=0.5)
plt.scatter(fcm.centers[:, 0], fcm.centers[:, 1], marker='X', c='red', s=200, label='Cluster Centers')
plt.title('Fuzzy Clustering with FCM')
plt.legend()
plt.show()

# 计算模糊聚类的轮廓系数
silhouette_avg = silhouette_score(X_scaled, fuzzy_labels)
print(f'Silhouette Score: {silhouette_avg}')

# 计算每个数据点的轮廓系数
silhouette_values = silhouette_samples(X_scaled, fuzzy_labels)

# 绘制轮廓系数图
plt.figure(figsize=(8, 6))
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=fuzzy_labels, cmap='viridis', s=50, alpha=0.5)
plt.title('Silhouette Plot for Fuzzy Clustering')
plt.xlabel('Silhouette Coefficient Values')
plt.ylabel('Cluster Labels')
plt.colorbar()
plt.show()

首先生成模拟数据,然后使用FCM进行模糊聚类。

然后计算了轮廓系数、Calinski-Harabasz指数、Davies-Bouldin指数和调整兰德指数(如果有真实标签)。

最后,绘制了模糊聚类结果的散点图和轮廓系数图,以可视化评估聚类质量。

注意:需要提前安装scikit-learnmatplotlibnumpyfcmeans

最后

今天介绍了关于聚类的一些常用算法:K均值聚类、层次聚类、密度聚类、谱聚类、EM聚类、模糊聚类。

喜欢的朋友可以收藏、点赞

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

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

相关文章

二分答案(区间范围)

D. Jumping Through Segments 输入数据 4 5 1 5 3 4 5 6 8 10 0 1 3 0 2 0 1 0 3 3 3 8 10 18 6 11 4 10 20 0 5 15 17 2 2 输出范围 7 0 5 13#include<bits/stdc.h> #define int long long using namespace std; typedef pair<char,int>PII; const int N2e510;…

应急响应-Windows-挖矿病毒

随着虚拟货币市场的繁荣&#xff0c;挖矿病毒已成为网络安全领域一大挑战。该类病毒利用计算机资源进行加密货币的挖掘&#xff0c;给个人用户和企业网络带来了严重的安全风险。本文将针对挖矿病毒的应急响应和防范措施进行分析和总结。 一.判断挖矿病毒 服务器突然发现CPU资…

树莓派发送指令控制FPGA板子上的流水灯程序

文章目录 前言一、树莓派简介二、整体实现步骤三、树莓派设置四、树莓派串口代码五、Verilog代码5.1 串口接收模块5.2 流水灯模块 六、quartus引脚绑定七、 运行效果总结参考 前言 ​ 本次实验的目的是通过树莓派和FPGA之间的串口通信&#xff0c;控制FPGA开发板上的小灯。实验…

OpenAI 发布新款大型语言模型 GPT-4o,带大家了解最新ChatGPT动态。

OpenAI 发布新款大型语言模型 GPT-4o 昨日OpenAI 举办了一场线上活动&#xff0c;正式发布了其最新研发的 AI 模型 GPT-4o&#xff0c;并详细介绍了该模型的强大功能和未来发展规划。此次发布标志着 AI 技术的重大突破&#xff0c;为用户提供了更加便捷、高效的 AI 工具&#…

css多种布局方式

css多种布局方式 简介标准流布局&#xff08;主要依赖margin\padding&#xff09;浮动布局&#xff08;float&#xff09;定位布局&#xff08;position&#xff09;弹性布局&#xff08;flex&#xff09;网格布局&#xff08;grid&#xff09;多列布局&#xff08;column&…

【论文阅读】<YOLOP: You Only Look Once for PanopticDriving Perception>

Abstract 全视驾驶感知系统是自动驾驶的重要组成部分。一个高精度的实时感知系统可以帮助车辆在驾驶时做出合理的决策。我们提出了一个全视驾驶感知网络&#xff08;您只需寻找一次全视驾驶感知网络&#xff08;YOLOP&#xff09;&#xff09;&#xff0c;以同时执行交通目标检…

7.STL中string的一些超常用函数 (附习题)

目录 1.find 2.atoi 3.to_string 4.getline 【leetcode 习题】 387.字符串中的第一个唯一字符 125. 验证回文串 1.find 1.查找第一次出现的目标字符串&#xff1a;说明&#xff1a;如果查找成功则输出查找到的第一个位置&#xff0c;否则返回-1&#xff1b; s1.find(s2…

嗨动PDF编辑器怎么删除pdf空白页?教程来啦!

嗨动PDF编辑器怎么删除pdf空白页&#xff1f;在日常的工作和学习中&#xff0c;PDF文件因其跨平台兼容性和稳定性而备受青睐。然而&#xff0c;在编辑PDF文件时&#xff0c;我们往往会遇到一些令人头疼的问题&#xff0c;其中最常见的就是空白页。空白页不仅浪费了宝贵的存储空…

ESP32-S3+86盒线控器方案,含开发时问题技术解答

随着智能家居产品越来越多&#xff0c;线控器应用也加大&#xff0c;86盒线控器跟智能吹风机联动&#xff0c;跟中央空调联动&#xff0c;下面讲下ESP32-S386盒线控器方案在开发中遇到的问题。 一、ESP32-S386盒线控器方案&#xff1a; 1、无需网关&#xff0c;可以直接连家里…

零基础10 天入门 Web3之第3天

10 天入门 Web3之第3天 什么是以太坊&#xff0c;以太坊能做什么&#xff1f;Web3 是互联网的下一代&#xff0c;它将使人们拥有自己的数据并控制自己的在线体验。Web3 基于区块链技术&#xff0c;该技术为安全、透明和可信的交易提供支持。我准备做一个 10 天的学习计划&…

Linux系统运行级别

Linux系统运行级别&#xff1a;linux系统共有7个运行级别&#xff0c;不同的级别运行的程序和功能都是不一样的而linux系统默认是运行在一个标准级别上&#xff0c;系统运行级别文件/etc/inittab 运行级别0&#xff1a;所有进程被终止&#xff0c;机器将有序的停止&#xff0c;…

SpringBootWeb 篇-深入了解请求响应(服务端接收不同类型的请求参数的方式)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 请求响应概述 1.1 简单参数 1.2 实体参数 2.3 数组集合参数 2.4 日期参数 2.5 json 参数 2.6 路径参数 3.0 完整代码 1.0 请求响应概述 当客户端发送不同的请求参…

【专利】一种日志快速分析方法、设备、存储介质

公开号CN116560938A申请号CN202310311478.5申请日2023.03.28 是我在超音速人工智能科技股份有限公司(833753) 职务作品&#xff0c;第一发明人是董事长夫妇&#xff0c;第二发明人是我。 ** 注意** &#xff1a; 内容比较多&#xff0c;还有流程图、界面等。请到 专利指定页面…

30-10y国债利差反转的必要条件

国君宏观表示&#xff0c;30-10y期限利差定价本质上是私人部门主动加杠杆的预期&#xff0c;央行购债与资本市场的正向反馈是可以期待的一种场景&#xff0c;而企业部门的被动加杠杆须以可持续的需求动能与盈利预期作为前提。 要点&#xff1a; 期限利差的本质&#xff1a;对长…

如何压缩图片大小?7个实用软件教你快速压缩图片大小

如何压缩图片大小&#xff1f;7个实用软件教你快速压缩图片大小 以下是七个实用的软件&#xff0c;可以帮助您快速压缩图片大小&#xff1a; 图片编辑助手&#xff1a;这是一款功能强大的图像处理软件&#xff0c;其中包含了图像压缩功能。您可以打开需要压缩的图片&#xf…

手撕C语言题典——环形链表的约瑟夫问题

目录 前言 一.故事背景 二.题目 ​编辑三.思路 1&#xff09;数组 ​编辑2&#xff09; 循环链表 四.代码实现 搭配食用更佳哦~~ 数据结构之单单单——链表-CSDN博客 数据结构之单链表的基本操作-CSDN博客 前面学了单链表的相关知识&#xff0c;我们来尝试做一下关于…

关于nvm管理node版本的一些问题

背景&#xff1a; 基于开发项目的迭代不能做到全部更新&#xff0c;有的项目是vue2.0 有的项目是vue3.0&#xff0c; 那么我们开发的时候就需要对node 进行更新&#xff0c;进而产生因为版本不同导致的错误&#xff1a;由此我们需要一款管理 切换node版本的东西&#xff0c;那就…

全面解析OpenAI的新作——GPT-4o

5月14日凌晨1点、太平洋时间的上午 10 点&#xff0c;OpenAI的GPT-4o的横空出世&#xff0c;再次巩固了其作为行业颠覆者的地位。GPT-4o的发布不仅仅是一个产品的揭晓&#xff0c;它更像是向世界宣告AI技术已迈入了一个全新的纪元&#xff0c;连OpenAI的领航者萨姆奥特曼也不禁…

OpenAI深夜震撼发布最新模型GPT-4o,送上最快速便捷教程

北京时间5月14日凌晨&#xff0c;有人说OpenAI一夜改变了历史。 在我们的深夜、太平洋时间的上午 10 点&#xff0c;OpenAI 召开春季发布会&#xff0c;公布了最新的GPT-4o模型&#xff0c;o代表Omnimodel&#xff08;全能模型&#xff09;。20多分钟的演示直播&#xff0c;展…

HTML常见标签-换行标签-水平线标签

换行标签 单纯实现换行的标签是br,如果想添加分隔线,可以使用hr标签 代码 工信部统计显示&#xff0c;截至去年底&#xff0c;我国算力总规模达到180百亿亿次浮点运算/秒&#xff0c;存力总规模超过1000EB&#xff08;1万亿GB&#xff09;。<br>国家枢纽节点间的网络单向…