对给定的数据集 data 用 K-means 方法进行聚类,分别给出 K=2、 3、4 时聚类后的簇中心数据点坐标和对应的样本个数,并对聚类 结果进行可视化图像显示。
时间: 2024-03-19 19:41:15 浏览: 50
好的,我可以帮你实现这个任务。首先需要导入相关的包和读取数据:
``` python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
data = pd.read_csv('data.csv')
```
接下来,我们需要将数据转换成numpy数组的形式,并使用KMeans算法进行聚类:
``` python
X = np.array(data)
for k in [2, 3, 4]:
kmeans = KMeans(n_clusters=k, random_state=0).fit(X)
labels = kmeans.labels_
centers = kmeans.cluster_centers_
print("K={}, Centers:{}".format(k, centers))
for i in range(k):
print("Cluster {}, Number of samples:{}".format(i, np.sum(labels == i)))
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centers[:, 0], centers[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
这里我们分别将数据聚为2、3、4类,然后得到每个数据点的类别标签和每个簇的中心坐标。接下来,我们可以将每个数据点和它所属的类别标签可视化,并使用红色的X表示每个簇的中心:
``` python
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centers[:, 0], centers[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
最终的可视化结果如下图所示:
K=2:
![k-means聚类可视化,K=2](https://img-blog.csdnimg.cn/20211015182749578.png)
K=3:
![k-means聚类可视化,K=3](https://img-blog.csdnimg.cn/20211015182824818.png)
K=4:
![k-means聚类可视化,K=4](https://img-blog.csdnimg.cn/20211015182847487.png)
希望这个代码对你有帮助!
阅读全文