我有兴趣找到function
到自动确定R中最佳的群集数量。
我正在使用包TraMineR
中的序列算法来计算我的距离。
library(TraMineR)
data(biofam)
biofam.seq <- seqdef(biofam[501:600, 10:25])
## OM distances ##
biofam.om <- seqdist(biofam.seq, method = "OM", indel = 3, sm = "TRATE",
full.matrix = F)
例如,hclust
可以像这样使用
h = hclust(as.dist(biofam.om), method = 'ward')
然后可以手动确定群集的数量
clusters = cutree(h, k = 7)
我想要的最终是根据“理想”的群集数量,在cutree
函数中自动设置k
个群集。
包clValid
似乎有这样的功能(optimalScores
)。
但是,我无法将距离矩阵传递给clValid
。
clValid(obj = as.dist(biofam.om), 2:6, clMethods = 'hierarchical')
我收到此错误
参数'obj'必须是matrix,data.frame或ExpressionSet对象
我使用其他软件包(例如NbClust
NbClust(diss = as.dist(biofam.om), method = 'ward.D')
需要数据矩阵。
任何人都知道如何解决这个问题或了解其他包裹?
感谢。
答案 0 :(得分:1)
有几种不同的标准可用于衡量聚类结果的质量并选择最佳聚类数。看一下weightedCluster包:http://mephisto.unige.ch/weightedcluster/WeightedCluster.pdf 您可以轻松地比较不同的度量和群集数量。