对鸢尾花数据进行K-means算法聚类。并画出散点图
时间: 2024-06-09 08:08:24 浏览: 188
好的,我可以用Python来实现。首先需要导入必要的库,包括`numpy`、`pandas`、`sklearn`和`matplotlib`。以下是完整代码:
```python
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 读入数据
data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data", header=None)
# 将数据转换为numpy数组
X = np.array(data.iloc[:, :-1])
# KMeans聚类
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
# 聚类结果
labels = kmeans.labels_
# 聚类中心
centers = kmeans.cluster_centers_
# 绘制散点图
plt.scatter(X[labels == 0][:, 0], X[labels == 0][:, 1], color='red', label='Cluster 1')
plt.scatter(X[labels == 1][:, 0], X[labels == 1][:, 1], color='blue', label='Cluster 2')
plt.scatter(X[labels == 2][:, 0], X[labels == 2][:, 1], color='green', label='Cluster 3')
plt.scatter(centers[:, 0], centers[:, 1], color='black', marker='*', label='Centroids')
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('K-Means Clustering')
plt.legend()
plt.show()
```
代码解释:
1. 首先导入必要的库,包括`numpy`、`pandas`、`sklearn`和`matplotlib`。
2. 读入鸢尾花数据,将数据转换为numpy数组。
3. 调用`KMeans`函数,将数据分为三类,并训练模型。
4. 获取聚类结果和聚类中心。
5. 绘制散点图,其中不同类别的数据用不同颜色表示,聚类中心用黑色星号表示。
运行代码后,会出现一个散点图窗口,如下图所示:
![k-means聚类结果](https://img-blog.csdnimg.cn/20210816175226576.png)
阅读全文