鸢尾花聚类项目实战
时间: 2025-06-26 18:14:11 浏览: 6
### 鸢尾花数据集聚类分析的实战代码
以下是基于 `scikit-learn` 的鸢尾花数据集(Iris Dataset)进行 K-Means 聚类分析的一个完整实例:
#### 数据加载与预处理
首先,导入必要的库并加载鸢尾花数据集。
```python
from sklearn.datasets import load_iris
import pandas as pd
# 加载 Iris 数据集
data = load_iris()
X = data.data # 特征矩阵
y_true = data.target # 真实标签
# 将数据转换为 DataFrame 形式以便于查看
df = pd.DataFrame(X, columns=data.feature_names)
print(df.head())
```
#### 使用 K-Means 进行聚类
接下来,利用 `KMeans` 类对数据进行聚类分析。
```python
from sklearn.cluster import KMeans
import numpy as np
# 创建 KMeans 模型对象
kmeans = KMeans(n_clusters=3, random_state=42)
# 训练模型
kmeans.fit(X)
# 获取聚类结果
labels = kmeans.labels_
centroids = kmeans.cluster_centers_
print(f"Cluster Labels: {labels}")
print(f"Centroids:\n{centroids}")
```
#### 可视化聚类结果
为了更好地理解聚类效果,可以通过降维技术可视化二维空间中的簇分布。
```python
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
# 对特征进行主成分分析 (PCA),降低到两维
pca = PCA(n_components=2)
reduced_data = pca.fit_transform(X)
# 绘制散点图展示聚类结果
plt.figure(figsize=(8, 6))
for i in range(3): # 假设三个类别
cluster_points = reduced_data[np.where(labels == i)]
plt.scatter(cluster_points[:, 0], cluster_points[:, 1], label=f'Cluster {i}')
# 添加真实标签作为对比
true_labels_reduced = reduced_data[y_true != labels]
plt.scatter(true_labels_reduced[:, 0], true_labels_reduced[:, 1], c='black', marker='x', s=100, label='Misclassified')
plt.title('K-Means Clustering on Iris Dataset')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.legend()
plt.show()
```
以上代码展示了如何通过 `scikit-learn` 和 `matplotlib` 来实现鸢尾花数据集上的 K-Means 聚类,并将其结果可视化[^1]。
---
### 关键概念解释
- **K-Means** 是一种常用的无监督学习算法,适用于解决分组问题。它试图将样本划分为若干个互不相交的子集,使得同一子集中样本之间的距离尽可能接近,而不同子集间的差异最大化[^2]。
- **PCA(主成分分析)** 是一种常见的降维方法,在高维度数据难以直观观察的情况下尤为有用。它可以提取最重要的特征方向,从而简化复杂的数据结构。
---
阅读全文
相关推荐


















