利用python使用k-means算法实现对鸢尾花数据集的分类,并让k分别取8,5,3观察实验效果
时间: 2024-10-22 21:21:52 浏览: 50
python内置K-means聚类算法对鸢尾花数据的聚类情况
在Python中,我们可以使用sklearn库中的KMeans算法来对鸢尾花(Iris)数据集进行聚类分析。首先,我们需要加载数据并对其进行预处理。以下是实现这个过程的步骤:
1. **导入所需库**:
```python
import numpy as np
from sklearn import datasets
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
```
2. **加载鸢尾花数据集**:
```python
iris = datasets.load_iris()
X = iris.data
y = iris.target
```
3. **根据k值进行分类**:
对于不同的k值,我们创建KMeans实例并运行fit函数:
```python
ks = [8, 5, 3]
for k in ks:
kmeans = KMeans(n_clusters=k)
kmeans.fit(X)
labels_kmeans = kmeans.labels_
# 结果可视化
plt.figure(figsize=(10, 6))
for i in range(k):
plt.scatter(X[labels_kmeans == i, 0], X[labels_kmeans == i, 1],
label=f"Cluster {i+1}")
plt.title(f"K-Means Clustering with k={k}")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.legend()
plt.show()
```
4. **观察实验效果**:
每次运行会得到对应k值下的聚类结果图,你可以看到随着k值减小,聚类的数量变少,每个簇包含的数据点更多;反之,当k值增大,簇的数量增多,簇内的样本可能更细化,但可能会有空簇(即某些簇为空)。通过比较不同k值下簇内样本的相似度以及簇间的差异,可以评估哪种k值更能反映出数据的真实分布。
阅读全文