【Python机器学习】K-Means、DBSCAN、GMM三种聚类的对比演示(附源码)

简介: 【Python机器学习】K-Means、DBSCAN、GMM三种聚类的对比演示(附源码)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~

下面给出一个从多方面综合分析划分聚类,密度聚类和模型聚类。以及聚类算法内部评价指标的示例,该示例先生成三种二维平面上的实验数据和一种高维空间中的实验数据,然后分别用kmeans,DBSCAN,GaussianMixture三种算法对它们进行聚类,并计算SC DBI CH ZQ四个指标,展示实验样本点的分布与聚类算法实用性,评价指标值有效性的关系。

三种二维平面上的实验样本图如下,它们分别是圆环,高斯分布和月牙形状的,由datasets模块中响应的函数产生

高维空间中的实验样本通过PCA降维后,在二维平面上的分布如下所示,它是由datasets模块中的make_gaussian_quantiles()函数在四维空间中以原点为中心,按高斯分布随机产生的,由内向外分为9层的类球状分布,随后去掉1-6层和第8层,只保留内核的第0层和外面的第7层,可以将此数据想象成一个带核的空心四维类球体

三种聚类算法的结果以及指标值对比如下图所示

DBSCAN算法对非凸簇有较好的聚类效果,GaussianMixture算法对高斯分布的簇有较好的聚类效果,四维类球体样本集也是按高斯分布产生的,因此它可以很好地学习到模型参数,高斯分布的样本集在实际工程中比较常见

预先探索样本集在空间中的分布对于选择合适的聚类算法也很重要,除了通过降维来直观的观察样本集在空间中的分布外,聚类内部评价指标也可以帮助分析,比如在面对大数据量的聚类任务时,可以先随机抽取或者划分网格抽取小部分样本进行试分簇,如果发现运行DBSCAN算法后的ZQ指标改善较多,而其他指标变差,则样本集可能是非凸的分布

部分代码如下

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans, DBSCAN
from sklearn.mixture import GaussianMixture
from sklearn import metrics
from zqscore import ZQ_score
X1, y1 = make_blobs(n_samples=300, n_features=2, centers=[[0,0]], cluster_std=[1.2])
X2, y2 = make_blobs(n_samples=600, n_features=2, centers=[[3,3]], cluster_std=[1.8])
plt.scatter(X1[:, 0], X1[:, 1], marker='o', color='r')
plt.scatter(X2[:, 0], X2[:, 1], marker='+', color='b')
plt.show()
y_pred = gm.predict(X)
C1 = []
C2 = []
for i in range(len(X)):
    if y_pred[i] == 1:
        C1.append(list(X[i]))
    else:
        C2.append(list(X[i]))
C1 = np.array(C1)
C2 = np.array(C2)
plt.scatter(C1[:, 0], C1[:, 1], marker='o', color='r')
plt.scatter(C2[:, 0], C2[:, 1], marker='+', color='b')
plt.show()
samples = np.loadtxt("kmeansSamples.txt")
gm = GaussianMixture(n_components=2, random_state=0).fit(samples)
labels = gm.predict(samples)
plt.scatter(samples[:,0],samples[:,1],c=labels+1.5,linewidths=np.power(labels+1.5, 2))
plt.show()

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
2月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
377 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
2月前
|
机器学习/深度学习 数据采集 算法
基于mediapipe深度学习的运动人体姿态提取系统python源码
本内容介绍了基于Mediapipe的人体姿态提取算法。包含算法运行效果图、软件版本说明、核心代码及详细理论解析。Mediapipe通过预训练模型检测人体关键点,并利用部分亲和场(PAFs)构建姿态骨架,具有模块化架构,支持高效灵活的数据处理流程。
|
2月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
4月前
|
算法 数据可视化 数据挖掘
基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
本内容展示了基于EM算法的高斯混合模型(GMM)聚类实现,包含完整Python代码、运行效果图及理论解析。程序使用三维数据进行演示,涵盖误差计算、模型参数更新、结果可视化等关键步骤,并附有详细注释与操作视频,适合学习EM算法与GMM模型的原理及应用。
|
4月前
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
|
3月前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
247 0
|
4月前
|
机器人 API 数据安全/隐私保护
QQ机器人插件源码,自动回复聊天机器人,python源码分享
消息接收处理:通过Flask搭建HTTP服务接收go-cqhttp推送的QQ消息47 智能回复逻辑
|
1月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
12月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1150 6
|
6月前
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。

热门文章

最新文章

推荐镜像

更多
下一篇
oss云网关配置