问题描述
我正在使用fpc
软件包来确定最佳群集数。 pamk()
函数采用相异度矩阵作为参数,不需要用户指定k
。根据{{3}}:
pamk()这将调用pam和clara进行围绕类固醇的分区 聚类方法(Kaufman和Rouseeuw,1990),包括两个 估算簇数的不同方法。
但是当我输入两个非常相似的矩阵foo
和bar
(下面的数据)时,函数在第二个矩阵上出现错误(条形图)
Error in pam(sdata,k,diss = diss,...) :
Number of clusters 'k' must be in {1,2,..,n-1}; hence n >= 2
鉴于输入矩阵基本相同,是什么导致此错误?例如:
foo有效!
hc <- hclust(as.dist(foo))
plot(hc)
pamk.best <- fpc::pamk(foo)
pamk.best$nc
[1] 2
酒吧没有
hc <- hclust(as.dist(bar))
plot(hc,main = 'bar dendogram')
pamk.best <- fpc::pamk(bar)
Error in pam(sdata,n-1}; hence n >= 2
任何建议都会有所帮助!
dput(foo)
structure(c(0,9,0),.Dim = c(14L,14L),.Dimnames = list(
c("etc","etc","similares","similares"),NULL))
dput(bar)
structure(c(0,6,.Dim = c(5L,5L),.Dimnames = list(c("ramírez",NULL))
解决方法
bar
具有n=5
列,因此max(krange)
必须为krange;尝试:
pamk.best <- fpc::pamk(bar,krange=c(2:(dim(bar)[2]-1)))