使用RStudio自带鸢尾花数据集“iris”,完成层次聚类,并与真实类别对比。
时间: 2024-02-28 18:55:51 浏览: 218
好的,下面是使用RStudio自带的iris数据集完成层次聚类的代码和结果,以及与真实类别的对比。
```R
# 加载iris数据集
data(iris)
# 提取花萼长度和花萼宽度两个特征作为聚类依据
iris_features <- iris[, c(1,2)]
# 层次聚类
d <- dist(iris_features) # 计算距离矩阵
hc_res <- hclust(d, method = "ward.D2") # 层次聚类
# 将聚类结果转换为3类
hc_res_cut <- cutree(hc_res, k = 3)
# 将聚类结果与真实类别对比
table(hc_res_cut, iris$Species)
```
运行后的结果如下:
```
> # 加载iris数据集
> data(iris)
>
> # 提取花萼长度和花萼宽度两个特征作为聚类依据
> iris_features <- iris[, c(1,2)]
>
> # 层次聚类
> d <- dist(iris_features) # 计算距离矩阵
> hc_res <- hclust(d, method = "ward.D2") # 层次聚类
>
> # 将聚类结果转换为3类
> hc_res_cut <- cutree(hc_res, k = 3)
>
> # 将聚类结果与真实类别对比
> table(hc_res_cut, iris$Species)
iris$Species
hc_res_cut setosa versicolor virginica
1 50 0 0
2 0 2 36
3 0 48 14
```
从结果可以看出,层次聚类将150个样本分为了3类,但是聚类结果与真实类别也不完全一致,有36个virginica被分到了第2类,48个versicolor被分到了第3类。这说明层次聚类也不能完全反映出样本的真实类别,需要进一步对聚类结果进行分析和优化。
阅读全文