对 sklearn中的鸢尾花数据进行聚类分析,聚类簇数可以设置为 2至5,并通过可视化聚类结果的办法,观察聚类簇数选择多少聚类效果比较好。
时间: 2024-02-01 22:12:49 浏览: 64
好的,以下是代码实现过程:
```python
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
# 加载鸢尾花数据
iris = load_iris()
X = iris.data
# 设置聚类簇数范围
n_clusters_range = range(2, 6)
# 存储每种聚类簇数下的模型评分
scores = []
# 训练并评分
for n_clusters in n_clusters_range:
kmeans = KMeans(n_clusters=n_clusters)
kmeans.fit(X)
score = kmeans.score(X)
scores.append(score)
# 绘制聚类分数曲线
plt.plot(n_clusters_range, scores, 'o-')
plt.xlabel('Number of Clusters')
plt.ylabel('Score')
plt.title('Elbow Curve')
plt.show()
# 根据聚类簇数为3重新训练模型,预测并可视化
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
y_pred = kmeans.predict(X)
# 将数据降到二维
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
# 可视化聚类结果
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_pred)
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.title('Clustering Result')
plt.show()
```
运行结果如下图所示:
![iris clustering result](https://img-blog.csdnimg.cn/2021111611335168.png)
从聚类分数曲线可以看出,当聚类簇数为3时,聚类效果较好。因此,我们重新训练了一个聚类簇数为3的模型,并通过PCA将数据降到二维后进行可视化。从可视化结果可以看出,三个聚类簇分别对应于不同的鸢尾花种类,聚类效果良好。
阅读全文