有没有一种简单的方法来计算产生给定最小大小的分组的h
in最小值?cut
在这个例子中,如果我想要每个至少有 10 个成员的集群,我应该使用h = 3.80
:
# using iris data simply for reproducible example
data(iris)
d <- data.frame(scale(iris[,1:4]))
hc <- hclust(dist(d))
plot(hc)
cut(as.dendrogram(hc), h=3.79) # produces 5 groups; group 4 has 7 members
cut(as.dendrogram(hc), h=3.80) # produces 4 groups; no group has <10 members
由于分割的高度在 中给出hc$height
,我可以使用创建一组候选值hc$height + 0.00001
,然后循环遍历每个候选值。但是,我看不到如何将集群大小解析members
出dendrogram
类。例如,根据需要cut(as.dendrogram(hc), h=3.80)$lower[[1]]$members
返回NULL
,而不是 66。
请注意,这是一个比在使用包的 R 中将树状图切割成具有最小簇大小的 n 棵树dynamicTreeCut
更简单的问题;这里我没有指定树的数量,只是最小集群大小。TYVM。