K-means聚类算法是一种简单而有效的数据挖掘和数据分析技术,它可以帮助我们找到数据中的模式和结构。在本文中,我们将通过图解的方式,从零开始,详细介绍K-means聚类算法,并教你如何使用scikit-learn库进行聚类分析。
1. 什么是K-means聚类算法?
K-means聚类算法是一种基于距离的聚类方法,其目标是找到K个中心点(称为“聚类中心”),使得每个数据点都尽可能接近其所属的聚类中心。具体来说,K-means算法会通过以下步骤来工作:
- 随机选择K个数据点作为初始聚类中心。
- 将每个数据点分配到最近的聚类中心,形成K个聚类。
- 重新计算每个聚类的中心点。
- 重复步骤2和3,直到聚类中心不再改变或达到最大迭代次数。
2. K-means算法的图解
为了更好地理解K-means算法,我们可以通过一个简单的图例来展示其工作原理。以下是一个包含10个数据点的二维空间,我们将使用K-means算法将其分为3个聚类。
graph LR
A[数据点] --> B{随机选择K个点}
B --> C[分配到最近的聚类中心]
C --> D{计算每个聚类的中心点}
D --> E{重复分配和计算中心点}
E --> F{聚类中心不再改变}
F --> G[输出聚类结果]
在图中,我们首先随机选择了3个点作为初始聚类中心。然后,我们将每个数据点分配到最近的聚类中心,形成了3个聚类。接着,我们重新计算每个聚类的中心点,并再次分配数据点。这个过程一直重复,直到聚类中心不再改变。
3. 使用scikit-learn进行K-means聚类
scikit-learn是一个强大的Python库,它提供了多种机器学习算法的实现,包括K-means聚类算法。以下是一个使用scikit-learn进行K-means聚类的简单示例:
from sklearn.cluster import KMeans
import numpy as np
# 创建一个包含10个数据点的二维数组
data = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0],
[5, 5], [5, 20], [5, 0],
[8, 5]])
# 创建KMeans对象,设置聚类数为3
kmeans = KMeans(n_clusters=3, random_state=0).fit(data)
# 打印聚类中心
print(kmeans.cluster_centers_)
# 打印每个数据点的聚类标签
print(kmeans.labels_)
# 打印聚类评估指标(例如:轮廓系数)
print(kmeans.inertia_)
在这个示例中,我们首先导入了必要的库,然后创建了一个包含10个数据点的二维数组。接下来,我们创建了一个KMeans对象,并设置了聚类数为3。然后,我们使用fit方法将数据拟合到K-means模型中,并打印了聚类中心、每个数据点的聚类标签以及聚类评估指标。
4. 总结
通过本文,我们介绍了K-means聚类算法的基本原理和图解,并展示了如何使用scikit-learn库进行K-means聚类分析。希望本文能够帮助你轻松掌握K-means聚类技巧,并在实际应用中取得更好的效果。
