kmeans聚类算法python实现花簇
时间: 2025-04-23 20:10:50 浏览: 30
### Python KMeans聚类算法实现花簇分类示例
#### 导入必要的库
为了使用Python实现KMeans聚类算法对花簇进行分类,首先需要导入一些常用的库来处理数据和执行聚类操作。
```python
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
```
这些库提供了加载鸢尾花数据集、应用KMeans聚类模型以及可视化结果的功能[^1]。
#### 加载并准备数据
接下来,通过`load_iris()`函数获取内置的鸢尾花数据集,并将其转换成适合用于训练的形式:
```python
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data # 特征矩阵
y_true = iris.target # 真实标签(仅用于对比)
# 将特征名称映射到列名上创建DataFrame以便于查看
df = pd.DataFrame(X, columns=iris.feature_names)
print(df.head())
```
这段代码展示了如何读取鸢尾花的数据并将前几条记录打印出来以供检查。
#### 执行KMeans聚类分析
定义一个具有特定数量集群数目的KMeans实例,并利用`.fit_predict()`方法来进行拟合预测。这里假设我们想要找到三个不同的类别:
```python
n_clusters = 3
model = KMeans(n_clusters=n_clusters, random_state=42)
y_pred = model.fit_predict(X)
# 输出每个样本所属的簇编号
print(y_pred)
```
此部分实现了基于输入特征向量的学习过程,并返回了各个观测值对应的簇索引号。
#### 结果评估与展示
最后一步是对所得结果的质量做出评价,并绘制散点图直观呈现不同群组之间的分布情况:
```python
# 计算Calinski-Harabasz分数作为内部指标之一衡量聚类效果好坏
score = metrics.calinski_harabasz_score(X, y_pred)
print(f"Calinski-Harabasz Score: {score}")
# 绘制二维投影下的聚类效果图
plt.figure(figsize=(8, 6))
for i in range(n_clusters):
subset = X[y_pred == i]
plt.scatter(subset[:, 0], subset[:, 1], label=f'Cluster {i}')
centers = model.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='x')
plt.legend()
plt.title('Iris Clustering with K-Means')
plt.show()
```
上述脚本不仅计算了一个常见的有效性度量——Calinski-Harabasz指数,还生成了一张图表用来帮助理解最终形成的几个独立群体及其相对位置关系。
阅读全文
相关推荐













