R—;自动最优聚类数排序算法

R—;自动最优聚类数排序算法,r,validation,cluster-analysis,sequence,hierarchical-clustering,R,Validation,Cluster Analysis,Sequence,Hierarchical Clustering,我感兴趣的是找到一个函数来自动确定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)

我感兴趣的是找到一个
函数
来自动确定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)
然后,可以手动确定簇的数量

clusters = cutree(h, k = 7)
我想要的最终是在
cutree
函数中根据“理想”的簇数自动设置
k
簇数

clValid
似乎有这样的功能(
optimalScores
)。 但是,我无法将距离矩阵传递到
clValid

clValid(obj = as.dist(biofam.om), 2:6, clMethods = 'hierarchical')
我得到这个错误

参数“obj”必须是矩阵、data.frame或ExpressionSet对象

我使用其他软件包(如
NbClust

NbClust(diss = as.dist(biofam.om), method = 'ward.D')  
需要数据矩阵

有人知道如何解决这个问题,或者知道其他软件包吗


谢谢

衡量聚类结果的质量和选择最佳聚类数有几种不同的标准。看看weightedCluster包:
您可以很容易地比较不同的度量值和聚类数。

尝试
NbClust(diss=as.matrix(as.dist(biofam.om)),方法='ward.D')
。在文档中,它表示需要一个矩阵。您可以使用
kgs
惩罚函数来获得最佳的簇数。您需要
hclust
和距离矩阵对象。也看到这个。
NbClust(diss = as.dist(biofam.om), method = 'ward.D')