K-means聚类分析:从理论到Python实践

作者:carzy2024.03.08 18:58浏览量:75

简介:本文将简要介绍K-means聚类算法的原理,并通过Python代码示例展示如何使用scikit-learn库实现K-means聚类,包括数据预处理、模型训练、结果可视化等步骤。

K-means聚类分析:从理论到Python实践

1. K-means聚类算法简介

K-means是一种非常流行的无监督学习算法,用于将数据集划分为K个不同的聚类。算法的基本思想是:

  1. 随机选择K个点作为初始聚类中心。
  2. 将每个数据点分配给最近的聚类中心。
  3. 重新计算每个聚类的中心(即该聚类中所有数据点的均值)。
  4. 重复步骤2和3,直到聚类中心不再发生变化或达到预定的迭代次数。

2. Python实现K-means聚类

首先,我们需要安装scikit-learn库,它是一个强大的机器学习库,提供了许多现成的算法和工具。

  1. pip install 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=50)
  9. plt.title('原始数据')
  10. plt.xlabel('X轴')
  11. plt.ylabel('Y轴')
  12. plt.show()
  13. # 创建K-means模型并训练
  14. kmeans = KMeans(n_clusters=4)
  15. kmeans.fit(X)
  16. # 获取聚类标签
  17. y_kmeans = kmeans.labels_
  18. # 可视化聚类结果
  19. plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
  20. # 绘制聚类中心
  21. centers = kmeans.cluster_centers_
  22. plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);
  23. plt.title('K-means聚类结果')
  24. plt.xlabel('X轴')
  25. plt.ylabel('Y轴')
  26. plt.show()

在上面的代码中,我们首先使用make_blobs函数生成了一个包含300个数据点的模拟数据集,这些数据点分布在4个聚类中。然后,我们使用KMeans类创建了一个K-means模型,并指定了聚类数量为4。接着,我们调用fit方法来训练模型,并使用labels_属性获取每个数据点的聚类标签。最后,我们使用matplotlib库将聚类结果可视化。

3. 结论

通过本文的介绍和示例代码,您应该已经对K-means聚类算法有了初步的了解,并学会了如何使用scikit-learn库实现K-means聚类。在实际应用中,您可能需要对数据进行预处理,例如特征缩放或异常值处理,以获得更好的聚类效果。此外,您还可以尝试调整K-means算法中的参数,例如初始聚类中心的选择方法或迭代次数,以进一步优化聚类结果。

希望本文对您有所帮助!如有任何疑问或建议,请随时与我联系。

4. 参考资料

  1. scikit-learn官方文档
  2. KMeans类文档
  3. make_blobs函数文档