【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()

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

相关文章
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1866 6
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
1691 0
|
机器学习/深度学习 数据采集 算法
【机器学习】K-Means聚类的执行过程?优缺点?有哪些改进的模型?
K-Means聚类的执行过程、优缺点,以及改进模型,包括K-Means++和ISODATA算法,旨在解决传统K-Means算法在确定初始K值、收敛到局部最优和对噪声敏感等问题上的局限性。
624 2
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中的距离度量有哪些及公式表示?
聚类算法中常用的距离度量方法及其数学表达式,包括欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等多种距离和相似度计算方式。
1686 1
|
机器学习/深度学习 算法 数据挖掘
【机器学习】Python详细实现基于欧式Euclidean、切比雪夫Chebyshew、曼哈顿Manhattan距离的Kmeans聚类
文章详细实现了基于不同距离度量(欧氏、切比雪夫、曼哈顿)的Kmeans聚类算法,并提供了Python代码,展示了使用曼哈顿距离计算距离矩阵并输出k=3时的聚类结果和轮廓系数评价指标。
554 1
|
机器学习/深度学习 数据采集 算法
Python实现DBSCAN膨胀聚类模型(DBSCAN算法)项目实战
Python实现DBSCAN膨胀聚类模型(DBSCAN算法)项目实战
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
427 0
|
10月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。
1021 8
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。

推荐镜像

更多