Python中的K-means聚类分析及其结果可视化
2024.03.08 18:59浏览量:132简介:本文将介绍如何使用Python的Scikit-learn库进行K-means聚类分析,并通过Matplotlib库对聚类结果进行可视化。我们将了解K-means算法的基本原理,并通过实例演示如何应用它来解决实际问题。
引言
K-means聚类是一种无监督学习方法,用于将数据集划分为K个不相交的子集(或簇),使得每个数据点属于最近的平均值(即簇的质心)对应的簇。这种方法在数据挖掘、图像处理、模式识别等领域有广泛应用。
K-means算法原理
- 初始化:选择K个数据点作为初始质心。
- 分配步骤:将每个数据点分配给最近的质心。
- 更新步骤:重新计算每个簇的质心。
- 迭代:重复分配和更新步骤,直到质心不再显著变化或达到预定的迭代次数。
使用Python实现K-means聚类
首先,我们需要安装必要的库:
pip install numpy matplotlib scikit-learn
然后,我们可以使用Scikit-learn库中的KMeans类来实现K-means聚类:
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.cluster import KMeansfrom sklearn.datasets import make_blobs# 生成模拟数据X, y_true = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)# 可视化原始数据plt.scatter(X[:, 0], X[:, 1], s=30)plt.title('原始数据')plt.xlabel('X轴')plt.ylabel('Y轴')plt.show()# 使用KMeans进行聚类kmeans = KMeans(n_clusters=4)kmeans.fit(X)y_kmeans = kmeans.predict(X)# 可视化聚类结果plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, cmap='viridis', s=30)# 绘制质心centers = kmeans.cluster_centers_plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);plt.title('K-means聚类结果')plt.xlabel('X轴')plt.ylabel('Y轴')plt.show()
结果分析
在上述代码中,我们首先生成了一个包含300个数据点的模拟数据集,这些数据点围绕4个中心点分布。然后,我们使用KMeans类进行聚类,并将聚类结果可视化。在结果图中,我们可以看到数据点被成功划分为4个簇,并且每个簇的质心也被绘制出来。
结论
通过本文的介绍,我们了解了K-means聚类算法的基本原理,并使用Python的Scikit-learn库实现了该算法。我们还学习了如何使用Matplotlib库对聚类结果进行可视化。K-means聚类是一种简单而有效的无监督学习方法,可以帮助我们发现数据集中的潜在结构和模式。在实际应用中,我们可以根据具体问题调整簇的数量、迭代次数等参数,以获得更好的聚类效果。
参考文献
- 张志华. 机器学习原理与实践[M]. 北京: 电子工业出版社, 2017.
- 周志华. 机器学习[M]. 北京: 清华大学出版社, 2016.
- Scikit-learn documentation: https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

发表评论
登录后可评论,请前往 登录 或 注册