使用K-means聚类算法实现鸢尾花聚类
时间: 2023-12-10 08:29:45 浏览: 96
鸢尾花数据集是机器学习领域中最常用的数据集之一,包含150个样本,每个样本有4个特征,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度,同时每个样本还有一个标签,表示该样本属于哪个类别(山鸢尾、变色鸢尾、维吉尼亚鸢尾)。在这里,我们将使用K-means聚类算法对鸢尾花数据集进行聚类。
1. 导入数据集
我们首先需要导入鸢尾花数据集,并将其作为我们的聚类对象。
```python
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
```
2. 数据预处理
在使用K-means算法进行聚类之前,我们需要对数据进行预处理。这里我们将使用标准化方法将数据进行归一化处理,使得每个特征的均值为0,方差为1。
```python
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
```
3. 训练模型
接下来,我们将使用K-means算法对数据进行聚类。
```python
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3, random_state=0)
kmeans.fit(X_scaled)
```
在这里,我们将聚类数设置为3,因为鸢尾花数据集中有3个类别。我们还可以通过设置random_state参数来保证每次运行结果的一致性。
4. 可视化聚类结果
最后,我们可以将聚类结果可视化,以便更好地理解聚类算法的效果。
```python
import matplotlib.pyplot as plt
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=kmeans.labels_)
plt.title("K-means clustering on iris data")
plt.xlabel("sepal length (scaled)")
plt.ylabel("sepal width (scaled)")
plt.show()
```
运行以上代码,我们可以得到如下的聚类结果可视化图:
![iris clustering](https://cdn.jsdelivr.net/gh/kkzzhizhou/blog_images/img/iris_clustering.png)
从图中可以看出,K-means算法成功地将鸢尾花数据集分成了3个类别。
阅读全文