import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans # 生成随机数据 np.random.seed(0) X = np.random.randn(1000, 2) # 使用K-means算法进行聚类 kmeans = KMeans(n_clusters=3) kmeans.fit(X) labels = kmeans.labels_ centers = kmeans.cluster_centers_ # 可视化聚类结果 plt.scatter(X[:, 0], X[:, 1], c=labels) plt.scatter(centers[:, 0], centers[:, 1], marker='x', color='red') plt.title('Clustering Visualization') plt.xlabel('X') plt.ylabel('Y') plt.show()代码讲解
时间: 2024-04-13 09:29:07 浏览: 265
这段代码是使用K-means算法对随机生成的二维数据进行聚类,并可视化聚类结果。让我逐行解释一下代码的功能:
1. 导入必要的库:
```
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
```
这里导入了NumPy用于处理数据,Matplotlib用于数据可视化,以及scikit-learn库中的KMeans类用于执行K-means聚类。
2. 生成随机数据:
```
np.random.seed(0)
X = np.random.randn(1000, 2)
```
使用`np.random.randn`函数生成1000个服从标准正态分布的二维数据点。
3. 使用K-means算法进行聚类:
```
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
labels = kmeans.labels_
centers = kmeans.cluster_centers_
```
创建一个KMeans对象,并指定要聚类的簇数为3。然后使用`fit`方法对数据进行聚类,并获取每个样本点的标签和聚类中心。
4. 可视化聚类结果:
```
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centers[:, 0], centers[:, 1], marker='x', color='red')
plt.title('Clustering Visualization')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
```
使用`plt.scatter`函数将数据点按照聚类结果进行散点图展示,其中`c=labels`参数用于指定不同聚类的颜色。再使用`plt.scatter`函数将聚类中心以红色叉形标记出来。最后设置图的标题、x轴和y轴标签,并使用`plt.show`显示图像。
这样,代码就完成了数据的聚类和可视化展示。
阅读全文