首页 > 解决方案 > 如何将无监督的层次聚类结果与原始数据合并

问题描述

我在 R 中进行了无监督的层次聚类分析。我的数据是 3 列和大约 120,000 行的数字。我设法使用切割树并识别了 6 个集群。现在,我需要将这些集群恢复为原始数据,即添加另一列指示集群组(1 个,共 6 个)。我怎么能这样做?

# Ward's method
hc5 <- hclust(d, method = "ward.D2" )

# Cut tree into 6 groups
sub_grp <- cutree(hc5, k = 6)

# Number of members in each cluster
table(sub_grp)

我需要它,因为我的数据有空间链接,因此我想将集群映射回它们在地图上的位置。我感谢您的帮助。

标签: rmergetreehierarchical-clustering

解决方案


变量 sub_grp 只是集群分配的向量,因此您可以将其添加到数据框中:

data(iris)                         # Data frame available in base R.
str(iris)
d <- dist(iris[, -5])              # Column 5 is the species name so we drop it
hc5 <- hclust(d, method="ward.D2")
sub_grp <- cutree(hc5, k=3)
str(sub_grp)
iris$grp <- sub_grp
str(iris)
aggregate(iris[, 1:4,], by=list(iris$grp), mean)
xtabs(~grp+Species, iris)

最后两个命令按组计算 4 个数值变量的平均值,并将集群分配与已知物种交叉制表。您实际上不需要将集群分配添加到数据框中。R 允许您组合来自不同对象的变量,只要它们具有相同的行数。


推荐阅读