在R中以特定高度切割树时如何找到簇数

How to find the number of clusters when cutting a tree at a certain height in R

我想计算在给定高度砍树时的簇数。

树是 class "dendrogram" 在 R 中,所以我一直在使用包 dendextend 来探索这个。

示例:

# Create a dend:
dend <- 1:5 %>% dist %>% hclust %>% as.dendrogram
# Plot it:
dend %>% plot

我想在指定时查找有多少个聚类,例如 "height = 3"(请参阅生成的图中的 y 轴)。

在高度 3 我应该得到答案“2”,因为在那个高度水平线应该碰到两条垂直线,因此会生成两个簇。

在 "height = 1.5" 处,答案应该是“3”,因为三条线交叉等等。

我正在使用 class dendrogram 的对象,因为我的原始数据是 Newick 格式,我只找到了 read.dendrogram() 函数来解析这棵树。我已经使用 as.hclust() 将其转换为 hclust class 但我仍然找不到答案。

此外,如果有人知道如何绘制通过指定高度生成的簇,那将会有所帮助。

您想使用 dendextend 的 cutree

library(dendextend)
dend <- 1:5 %>% dist %>% hclust %>% as.dendrogram
length(unique(cutree(dend, h = 1.5)))