在R

时间:2019-07-29 14:12:07

标签: r hierarchical-clustering dendrogram unsupervised-learning dendextend

我想在给定高度切割一棵树时找到簇的数量。

树在R中​​属于“树状图”类,因此我一直在使用dendextend包进行探索。

示例:

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

当我指定例如“ height = 3”(请参见生成的图的y轴)时,我想查找多少个簇。

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

在“高度= 1.5”时,答案应该为“ 3”,因为三行交叉等等。

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

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

1 个答案:

答案 0 :(得分:1)

您要使用来自dendextend的美眉

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