利用k-means算法完成Iris数据集的聚类,并输出聚类结果的正确率和召回率
时间: 2023-06-29 14:04:01 浏览: 93
好的,我会给你介绍一下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算法是一个非监督学习算法,因此在计算正确率和召回率时,需要将聚类结果与真实标签进行比较。
阅读全文