K-means代码实现并测试鸢尾花数据集
时间: 2024-12-10 17:38:48 浏览: 128
K-means算法的Matlab实现以及Iris数据集
5星 · 资源好评率100%
首先,我们需要导入所需的库,然后加载鸢尾花数据集。在Python中,我们将使用`scikit-learn`库来进行K-means聚类。
这里是一个完整的代码示例,使用鸢尾花数据集(Iris dataset)进行K-means聚类:
```python
# 导入库
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# 加载数据集
iris = load_iris()
X = iris.data # 特征数据
y = iris.target # 标签数据
# 数据预处理(标准化)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 设置聚类数量(这里假设为3,对应鸢尾花的三个品种)
n_clusters = 3
# 创建并训练KMeans模型
kmeans = KMeans(n_clusters=n_clusters, random_state=42)
kmeans.fit(X_scaled)
# 分配每个样本到最近的聚类中心
labels = kmeans.labels_
# 检查聚类结果
print(f"样本分配到的聚类: {labels}")
# 绘制聚类结果
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=labels, cmap='viridis')
plt.title('Iris Dataset - K-Means Clustering')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.legend(['Cluster 0', 'Cluster 1', 'Cluster 2'])
plt.show()
# 测试评估指标(例如轮廓系数)
from sklearn.metrics import silhouette_score
score = silhouette_score(X_scaled, labels)
print(f"轮廓系数 (Silhouette Score): {score}")
```
运行这段代码后,你会看到根据K-means聚类算法对鸢尾花数据集的结果可视化,并计算了轮廓系数来衡量聚类的效果。
阅读全文