基于k-means算法的鸢尾花的分类的python算法实现
时间: 2023-07-31 21:05:48 浏览: 97
手工实现KNN和朴素贝叶斯算法对鸢尾花数据进行自动分类 完整代码+数据 可直接运行
5星 · 资源好评率100%
好的,以下是基于k-means算法的鸢尾花分类的Python算法实现:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 定义k值范围
k_range = range(1, 11)
# 定义存储惯性(inertia)的列表
inertias = []
# 循环k值范围,计算不同k值下的惯性值
for k in k_range:
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(X_scaled)
inertias.append(kmeans.inertia_)
# 绘制惯性-聚类数曲线
plt.plot(k_range, inertias, 'bx-')
plt.xlabel('Number of Clusters (k)')
plt.ylabel('Inertia')
plt.title('Elbow Method For Optimal k')
plt.show()
# 根据图像选择最佳的聚类数,此处选择k=3
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X_scaled)
# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('KMeans Clustering of Iris Dataset')
plt.show()
```
以上代码通过在鸢尾花数据集上运行k-means算法,将数据分为3类,并绘制了聚类结果的可视化图像。
阅读全文