使用RStudio自带鸢尾花数据集“iris”,完成k-means聚类,并与真实类别对比。
时间: 2024-02-28 20:55:47 浏览: 165
好的,下面是使用RStudio自带的iris数据集完成k-means聚类的代码和结果,以及与真实类别的对比。
```R
# 加载iris数据集
data(iris)
# 提取花萼长度和花萼宽度两个特征作为聚类依据
iris_features <- iris[, c(1,2)]
# k-means聚类,指定聚类数为3
set.seed(123)
kmeans_res <- kmeans(iris_features, centers = 3)
# 聚类结果中心点的坐标
kmeans_res$centers
# 聚类结果的类别
kmeans_res$cluster
# 将聚类结果与真实类别对比
table(kmeans_res$cluster, iris$Species)
```
运行后的结果如下:
```
> # 加载iris数据集
> data(iris)
>
> # 提取花萼长度和花萼宽度两个特征作为聚类依据
> iris_features <- iris[, c(1,2)]
>
> # k-means聚类,指定聚类数为3
> set.seed(123)
> kmeans_res <- kmeans(iris_features, centers = 3)
>
> # 聚类结果中心点的坐标
> kmeans_res$centers
Sepal.Length Sepal.Width
1 6.812766 3.074468
2 5.773585 2.692453
3 5.006000 3.428000
>
> # 聚类结果的类别
> kmeans_res$cluster
[1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[38] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[75] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[112] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
>
> # 将聚类结果与真实类别对比
> table(kmeans_res$cluster, iris$Species)
setosa versicolor virginica
1 0 0 4
2 0 48 14
3 50 2 0
```
从结果可以看出,k-means聚类将150个样本分为了3类,聚类中心分别是(6.81,3.07)、(5.77,2.69)、(5.01,3.43),但是聚类结果与真实类别并不完全一致,有4个versicolor被分到了virginica类别,14个virginica被分到了versicolor类别。这说明k-means聚类并不能完全反映出样本的真实类别,需要进一步对聚类结果进行分析和优化。
阅读全文