logo

Python中的K-means聚类分析及其结果可视化

作者:KAKAKA2024.03.08 18:59浏览量:132

简介:本文将介绍如何使用Python的Scikit-learn库进行K-means聚类分析,并通过Matplotlib库对聚类结果进行可视化。我们将了解K-means算法的基本原理,并通过实例演示如何应用它来解决实际问题。

引言

K-means聚类是一种无监督学习方法,用于将数据集划分为K个不相交的子集(或簇),使得每个数据点属于最近的平均值(即簇的质心)对应的簇。这种方法在数据挖掘、图像处理、模式识别等领域有广泛应用。

K-means算法原理

  1. 初始化:选择K个数据点作为初始质心。
  2. 分配步骤:将每个数据点分配给最近的质心。
  3. 更新步骤:重新计算每个簇的质心。
  4. 迭代:重复分配和更新步骤,直到质心不再显著变化或达到预定的迭代次数。

使用Python实现K-means聚类

首先,我们需要安装必要的库:

  1. pip install numpy matplotlib scikit-learn

然后,我们可以使用Scikit-learn库中的KMeans类来实现K-means聚类:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from sklearn.cluster import KMeans
  4. from sklearn.datasets import make_blobs
  5. # 生成模拟数据
  6. X, y_true = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)
  7. # 可视化原始数据
  8. plt.scatter(X[:, 0], X[:, 1], s=30)
  9. plt.title('原始数据')
  10. plt.xlabel('X轴')
  11. plt.ylabel('Y轴')
  12. plt.show()
  13. # 使用KMeans进行聚类
  14. kmeans = KMeans(n_clusters=4)
  15. kmeans.fit(X)
  16. y_kmeans = kmeans.predict(X)
  17. # 可视化聚类结果
  18. plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, cmap='viridis', s=30)
  19. # 绘制质心
  20. centers = kmeans.cluster_centers_
  21. plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);
  22. plt.title('K-means聚类结果')
  23. plt.xlabel('X轴')
  24. plt.ylabel('Y轴')
  25. plt.show()

结果分析

在上述代码中,我们首先生成了一个包含300个数据点的模拟数据集,这些数据点围绕4个中心点分布。然后,我们使用KMeans类进行聚类,并将聚类结果可视化。在结果图中,我们可以看到数据点被成功划分为4个簇,并且每个簇的质心也被绘制出来。

结论

通过本文的介绍,我们了解了K-means聚类算法的基本原理,并使用Python的Scikit-learn库实现了该算法。我们还学习了如何使用Matplotlib库对聚类结果进行可视化。K-means聚类是一种简单而有效的无监督学习方法,可以帮助我们发现数据集中的潜在结构和模式。在实际应用中,我们可以根据具体问题调整簇的数量、迭代次数等参数,以获得更好的聚类效果。

参考文献

  1. 张志华. 机器学习原理与实践[M]. 北京: 电子工业出版社, 2017.
  2. 周志华. 机器学习[M]. 北京: 清华大学出版社, 2016.
  3. Scikit-learn documentation: https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

相关文章推荐

发表评论