鸢尾花K-means聚类算法代码
时间: 2023-11-01 18:04:32 浏览: 134
好的,以下是鸢尾花K-means聚类算法的Python代码:
```python
import numpy as np
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
labels = kmeans.labels_
print(labels)
```
这段代码使用了scikit-learn库中的KMeans算法进行聚类,将鸢尾花数据集中的数据分为三类。
相关问题
k means聚类算法_K-Means 聚类算法实现鸢尾花数据的聚类
K-Means 聚类算法是一种基于距离的聚类算法,它将数据集分成 K 个簇,每个簇的中心点就是该簇内所有点的质心。K-Means 聚类算法的步骤如下:
1. 随机选择 K 个点作为簇的中心点。
2. 计算每个样本点到 K 个中心点的距离,将其分配到最近的簇中。
3. 对于每个簇,重新计算该簇的中心点。
4. 重复步骤 2 和 3,直到簇不再发生变化或达到最大迭代次数。
下面是使用 K-Means 聚类算法对鸢尾花数据进行聚类的 Python 代码:
``` python
import numpy as np
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
# 定义 K 值和最大迭代次数
k = 3
max_iter = 300
# 使用 K-Means 聚类算法
kmeans = KMeans(n_clusters=k, max_iter=max_iter)
kmeans.fit(X)
# 获取聚类结果和簇的中心点
labels = kmeans.labels_
centers = kmeans.cluster_centers_
# 绘制聚类结果图
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='*', s=200)
plt.title('K-Means Clustering')
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
```
上述代码中,首先加载鸢尾花数据集,然后定义 K 值和最大迭代次数。接着使用 K-Means 聚类算法,获取聚类结果和簇的中心点。最后绘制聚类结果图,其中样本点的颜色表示它所属的簇,红色星号表示每个簇的中心点。
使用K-means聚类算法实现鸢尾花聚类
鸢尾花数据集是机器学习领域中最常用的数据集之一,包含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个类别。
阅读全文