K-Means聚类iris
时间: 2025-01-05 12:24:42 浏览: 5
### 使用K-Means聚类算法处理Iris数据集
#### 导入必要的库
为了执行此操作,需要导入一些Python库来加载数据、运行模型并可视化结果。
```python
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
```
这些包提供了访问鸢尾花(Iris)数据集的功能,并支持应用机器学习方法对其进行分析[^1]。
#### 加载Iris数据集
接下来是从`sklearn.datasets`模块中获取内置的Iris数据集,并将其转换成适合后续使用的格式。
```python
iris = datasets.load_iris()
X = iris.data # 特征变量
y = iris.target # 实际类别标签,在这里仅用于对比验证
df = pd.DataFrame(X, columns=iris.feature_names)
print(df.head())
```
上述代码片段展示了如何读取数据并将前几行打印出来以便查看其结构。
#### 应用K-Means聚类算法
现在可以创建一个KMeans实例对象,并指定要寻找的簇数量(对于Iris来说通常是3)。之后调用fit()函数训练模型。
```python
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
labels = kmeans.labels_
centers = kmeans.cluster_centers_
# 将预测的结果附加到原始DataFrame上
df['Cluster'] = labels
```
这段程序实现了基于输入特征向量的学习过程,并分配了新的群组成员身份给每一个样本点。
#### 可视化聚类效果
最后一步是通过图形展示分组情况。由于四维空间难以直观呈现,可以选择两个最重要的属性绘制散点图。
```python
plt.figure(figsize=(8, 6))
colors = ['navy', 'turquoise', 'darkorange']
for i, color in zip(range(3), colors):
subset = df[df.Cluster == i]
plt.scatter(subset.iloc[:, 0], subset.iloc[:, 1], label=f'Cluster {i}', c=color)
plt.title('Visualization of clustered data')
plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1])
plt.legend()
plt.show()
```
该绘图命令能够帮助理解不同群体之间的分布模式以及它们之间可能存在的关系。
阅读全文