是否有一种简单的方法可以计算h
中的最小值cut
,它可生成给定最小大小的分组?R将树形图分割成最小大小的组
在这个例子中,如果我想集群,每个至少十名成员,我应该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
,然后循环切割每一个。但是,我没有看到如何解析dendrogram
类中的簇大小members
。例如,cut(as.dendrogram(hc), h=3.80)$lower[[1]]$members
返回NULL
,而不是66根据需要。
请注意,这是一个比Cutting dendrogram into n trees with minimum cluster size in R更简单的问题,它使用包dynamicTreeCut
;这里我没有指定树的数量,只是最小的簇大小。 TYVM。
作为一个附注:成员是一个属性 - 'attr(cut(as.dendrogram(hc),h = 3.80)$ lower [[1]],“members”)产量为66. – lukeA