使用scikit-learn框架,实现Kmeans算法对鸢尾花卉进行识别,from sklearn.cluster import KMeans from sklearn.metrics import adjusted_rand_score 用python,并可视化
时间: 2024-12-20 17:20:10 浏览: 4
在Python中,我们可以使用scikit-learn库来实现K-means聚类算法对鸢尾花卉数据集进行分类。首先,你需要导入所需的模块并加载数据。这里我们假定数据已经准备好了,例如来自Iris dataset:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
from sklearn.metrics import adjusted_rand_score
# 加载iris数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 准备数据,通常我们会先做特征缩放或降维
# 这里我们使用PCA进行降维以便于可视化
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)
# 设置k值(聚类类别数)
n_clusters = 3
# 创建KMeans模型
kmeans = KMeans(n_clusters=n_clusters, random_state=0)
# 训练模型
kmeans.fit(X_reduced)
# 预测每个样本所属的簇
labels = kmeans.labels_
# 计算调整 Rand 指数,评估聚类效果
ari = adjusted_rand_score(y, labels)
print(f"Adjusted Rand Index: {ari}")
# 可视化结果
plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=labels, cmap='viridis')
plt.title("K-Means Clustering of Iris Dataset")
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
plt.show()
阅读全文