K-Means算法鸢尾花数据集
时间: 2025-01-05 18:03:17 浏览: 2
K-Means算法是一种常用的聚类算法,用于将数据集分成K个簇。鸢尾花数据集(Iris dataset)是机器学习中常用的经典数据集,包含150个样本,每个样本有四个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。每个样本属于三种鸢尾花中的一种:Setosa、Versicolour和Virginica。
以下是使用K-Means算法对鸢尾花数据集进行聚类的步骤:
1. **数据预处理**:
- 加载数据集。
- 标准化或归一化数据,以确保每个特征对聚类结果的贡献是均衡的。
2. **选择K值**:
- 确定要分的簇的数量K。对于鸢尾花数据集,K=3,因为有三种不同的鸢尾花。
3. **初始化质心**:
- 随机选择K个样本作为初始质心。
4. **迭代过程**:
- 分配:将每个样本分配到最近的质心,形成K个簇。
- 更新:重新计算每个簇的质心,即簇内所有样本的平均值。
- 重复上述步骤,直到质心不再变化或达到最大迭代次数。
5. **评估聚类结果**:
- 使用轮廓系数(Silhouette Coefficient)等指标评估聚类效果。
以下是一个简单的Python代码示例,展示了如何使用K-Means算法对鸢尾花数据集进行聚类:
```python
import numpy as np
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 使用K-Means算法进行聚类
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X_scaled)
labels = kmeans.labels_
# 评估聚类效果
silhouette_avg = silhouette_score(X_scaled, labels)
print(f"轮廓系数: {silhouette_avg}")
# 打印每个簇的质心
print("质心:", kmeans.cluster_centers_)
```
阅读全文