0

我在两个不同的 hclust 集群上使用 cluster.stats 时遇到问题。那不可能吗?

我使用的是版本 0.99.491 – © 2009-2015 RStudio, Inc.,安装了以下软件包:

mylib <- "/Users/Klaus/R Packages/"; mylib
install.packages("NbClust",lib=mylib)
install.packages("modeltools",lib=mylib)
install.packages("flexclust",lib=mylib)
install.packages("RTextTools",lib=mylib) # Amazon's default machine image uses the Atlas BLAS. R points to that when installed with all defaults, but RTextTools expects the ordinary BLAS. 
install.packages("mclust",lib=mylib)
install.packages("fpc",lib=mylib)

library("NbClust",lib=mylib)
library("modeltools",lib=mylib)
library("flexclust",lib=mylib)
library("cluster",lib=mylib)
library("mclust",lib=mylib)
library("fpc",lib=mylib)

我正在创建这些集群:

data(nutrient, package="flexclust")
row.names(nutrient) <- tolower(row.names(nutrient))
nutrient.scaled <- scale(nutrient)
d_eucli <- dist(nutrient.scaled,"euclidean")
fit.single <- hclust(d_eucli, method="single")
fit.average <- hclust(d_eucli, method="average")

但是当在它们上使用 cluster.stats 时,我得到一个错误:

cluster.stats(d_eucli, fit.single$cluster, fit.average$cluster)

错误(在丹麦设置中):

Fejl i `[<-`(`*tmp*`, j, i, value = Inf) : subscript out of bounds
In addition: Advarselsbeskeder:
1: I max(clustering) : no non-missing arguments to max; returning -Inf
2: I cluster.stats(d_eucli, fit.single$cluster, fit.average$cluster) :
  clustering renumbered because maximum != number of clusters
3: I min(bv) : no non-missing arguments to min; returning Inf
4: I min(sij) : no non-missing arguments to min; returning Inf

我错过了什么?

4

2 回答 2

0

hclust 将计算树状图,而不是分区。

要执行后一步,请使用cutree. 然后你应该能够继续。

于 2016-04-09T21:22:03.063 回答
0

以下代码应该可以工作,我自己尝试过:

fit.single <- hclust(d_eucli, method="single")

fit.average <- hclust(d_eucli, method="average")

cut.single <- cutree(fit.single, k=3) 

如果您知道或基于其他验证测试,您应该指定集群的数量(K)

cut.average <- cutree(fit.average, k=3)

cluster.stats(d_eucli, cut.single, cut.average)
于 2016-05-12T09:26:27.497 回答