首页 > 解决方案 > R 树状图父子簇

问题描述

我试图找出如何检索哪些集群是“子/后代”到“父”集群。让我用下面的图来说明这一点。

该图是具有不同聚类解决方案的正常树状图。我想画的是较小的集群和较大的集群之间的路径。我想这样做的原因是我有一个非常大的数据集并且我有复杂的集群,我需要了解哪些集群从大集群“下降”(小集群)。

在此处输入图像描述

# Load data
data(USArrests)

# Compute distances and hierarchical clustering
dd <- dist(scale(USArrests), method = "euclidean")
hc <- hclust(dd, method = "ward.D2")

par(mfrow = c(2,2))
# Plot the obtained dendrogram
plot(hc, cex = 0.6, hang = -1)
rect.hclust(hc, k = 2, border = 2:5)

plot(hc, cex = 0.6, hang = -1)
rect.hclust(hc, k = 4, border = 2:5)

plot(hc, cex = 0.6, hang = -1)
rect.hclust(hc, k = 8, border = 2:5)

plot(hc, cex = 0.6, hang = -1)
rect.hclust(hc, k = 12, border = 2:5)

例如,这里我有两个解决方案:2 个集群和 4 个集群。我不清楚我如何知道哪些sub_grp2集群是从 2 个集群中划分出来的sub_grp1(等等)。

# Cut tree into 4 groups
sub_grp1 <- cutree(hc, k = 2)
sub_grp2 <- cutree(hc, k = 4)
sub_grp3 <- cutree(hc, k = 8)
sub_grp4 <- cutree(hc, k = 12)

USArrests$sub_grp1 = sub_grp1
USArrests$sub_grp2 = sub_grp2
USArrests$sub_grp3 = sub_grp3
USArrests$sub_grp4 = sub_grp4

我真正想要绘制或以任何方式检索的内容类似于:

在此处输入图像描述

这真的可以帮助我了解哪些较小的集群从较大的集群“下降”。

那有意义吗?

标签: rcluster-analysishierarchical-clustering

解决方案


你可以试试这个clustree包。该顺序可能与树状图中的顺序不同,但您可以看到关系:

library(clustree)
data(USArrests)

# Compute distances and hierarchical clustering
dd <- dist(scale(USArrests), method = "euclidean")
hc <- hclust(dd, method = "ward.D2")

Ks = c(1,2,4,6,8)
clus_results = sapply(Ks,function(i){
cutree(hc,i)
})

colnames(clus_results) = paste0("K",Ks)
clustree(clus_results, prefix = "K")

在此处输入图像描述


推荐阅读