r - 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
我真正想要绘制或以任何方式检索的内容类似于:
这真的可以帮助我了解哪些较小的集群从较大的集群“下降”。
那有意义吗?
解决方案
你可以试试这个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")
推荐阅读
- android - 如何使用 Firebase 在 Android 中集成 Stripe
- html - css list-style-type decimal,编号自动化测试
- javascript - 按字母顺序对 Object.entries 进行排序
- javascript - 在 javascript 中比较和过滤对象数组
- reactjs - 打字稿类型检查结果耗时过长
- python - 如何在我的函数列表中的元组中引用数据框和系列
- javascript - 如何解决从 javascript 中的不同 url 获取 json 数据的跨域问题?
- c# - 无法从 KendoUI 获取 Post 值
- reactjs - 如果在 react-select 中选择了相同的选项,则不要触发 onChange
- c# - 会话状态变量在使用时抛出异常。如何解决这个问题?