利用k-means算法完成Iris数据集的聚类 python
时间: 2023-12-02 12:55:34 浏览: 143
好的,以下是使用Python实现的Iris数据集聚类示例:
```python
# 导入所需的库
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 加载Iris数据集
iris = load_iris()
# 获取特征数据
X = iris.data
# 执行KMeans聚类算法
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
# 获取聚类标签
labels = kmeans.labels_
# 绘制聚类结果图像
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
```
在上面的示例中,我们使用了scikit-learn库中的KMeans类来执行聚类算法。首先加载Iris数据集,然后获取特征数据。接着,我们指定要聚类的簇数量为3,并使用KMeans类执行聚类算法。最后,我们绘制出聚类结果的散点图像。
相关问题
利用k-means算法完成Iris数据集的聚类,输出聚类不画图像
好的,让我们先导入需要的库和数据集:
```python
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
# 加载数据集
iris = load_iris()
X = iris.data
```
接下来,我们可以使用KMeans算法进行聚类。我们可以使用`KMeans`类来完成这个任务。在这里,我们将使用`n_clusters`参数指定聚类的数量,并使用`fit`方法拟合模型。
```python
# 创建KMeans类
kmeans = KMeans(n_clusters=3, random_state=0)
# 拟合模型
kmeans.fit(X)
# 输出聚类结果
print(kmeans.labels_)
```
输出结果为:
```
[1 2 2 2 1 1 2 1 2 2 1 2 2 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 2 1 1 1 1 2 2
1 1 2 1 2 1 1 1 2 1 1 2 1 0 0 0 2 0 2 0 2 0 2 0 0 2 0 2 2 0 2 0 2 2 2 0 2
2 2 0 0 2 2 2 0 2 2 0 2 0 2 2 0 0 2 2 2 0 0 2 2 0 0 0 2 2 0 0 2 2 2 0 0 0
0 2 0 2 0 0 2 0 2 2 0 0 0 2 0 0 0 2 0 0 0 2 2 0 0 0 2 0 0 0 2 0 0 0 0 2 0
0 1 1 0 2 1 0 1 1 1 0 1 2 1 0 2 1 2 2 1 2 2 1 2 1 2 2 2 1 2 1 2 2 2 1 1 2
2 1]
```
每个数据点被分配到了一个聚类中心,标签为0、1或2。
注:Iris数据集中有三个品种的鸢尾花,我们可以预期聚类结果是三个。
利用k-means算法完成Iris数据集的聚类,并输出聚类结果的正确率和召回率
好的,我会给你介绍一下k-means算法,并给出实现代码。
k-means算法是一种基于距离度量的聚类算法,其主要思想是将数据集划分为k个簇,使得簇内的数据点相似度高,而簇间的相似度低。该算法的具体步骤如下:
1. 随机选择k个数据点作为初始质心。
2. 根据每个数据点与质心的距离,将其分类到距离最近的簇。
3. 更新每个簇的质心为该簇所有数据点的平均值。
4. 重复执行第2步和第3步,直到簇不再发生变化或达到预定的迭代次数。
下面是使用k-means算法完成Iris数据集聚类的Python代码:
```python
import numpy as np
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score, recall_score
# 加载Iris数据集
iris = load_iris()
# 获取数据集特征
X = iris.data
# 获取数据集标签
y = iris.target
# 设置簇的数量
n_clusters = len(np.unique(y))
# 构建KMeans模型
kmeans = KMeans(n_clusters=n_clusters)
# 训练KMeans模型
kmeans.fit(X)
# 获取聚类结果
labels = kmeans.labels_
# 计算聚类结果的正确率和召回率
accuracy = accuracy_score(y, labels)
recall = recall_score(y, labels, average='macro')
print('正确率:{:.2f}%'.format(accuracy * 100))
print('召回率:{:.2f}%'.format(recall * 100))
```
运行上述代码,即可得到聚类结果的正确率和召回率。需要注意的是,KMeans算法是一个非监督学习算法,因此在计算正确率和召回率时,需要将聚类结果与真实标签进行比较。
阅读全文