【发布时间】:2016-05-21 00:18:59
【问题描述】:
我有一个距离矩阵 1609*1609,距离范围在 0~1 之间。如何使用这个矩阵来获得自然簇数?
我知道spss有一个TwoStep集群功能,可以生成特定数量的集群,但输入应该是变量列表。我只有距离矩阵,所以我认为我不能在 SPSS 中使用 TwoStep 集群。
我尝试在R 中使用hclust,但它没有给我集群的数量。我尝试使用NbClust,但我不知道我的“矩阵”是什么。我只有相异矩阵。
样本数据如下。
diss_matrix<-matrix(
c(0,0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,0.25,0.75,0.916666667,0.75,
0.916666667,0,0.916666667,0.916666667,0.916666667,0.916666667,0.75,0.25,0.916666667,0.25,
0.916666667,0.916666667,0,0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,
0.916666667,0.916666667,0.916666667,0,0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,
0.916666667,0.916666667,0.916666667,0.916666667,0,0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,
0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,0,0.916666667,0.916666667,0.916666667,0.916666667,
0.25,0.75,0.916666667,0.916666667,0.916666667,0.916666667,0,0.5,0.916666667,0.75,
0.75,0.25,0.916666667,0.916666667,0.916666667,0.916666667,0.5,0,0.916666667,0.25,
0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,0.916666667,0,0.916666667,
0.75,0.25,0.916666667,0.916666667,0.916666667,0.916666667,0.75,0.25,0.916666667,0),
nrow=10,
ncol=10,
byrow = TRUE)
dimnames(diss_matrix) = list(
paste0("A", 1:10),# row names
paste0("A", 1:10)) # column names
diss_matrix
我用hclust来画情节,但这不是我想要的。
library(stats)#install.packages("hclust")
diss_matrix2<-as.dist(diss_matrix, diag = FALSE, upper = FALSE)
fit <- hclust(diss_matrix2, method="ward.D")
plot(fit)
我想自动生成组号,所以我试试NbClust。
library(NbClust)
NbClust(data = "NULL", diss = diss_matrix, distance ="NULL", min.nc = 2, max.nc = 15, method = "ward", index = "all", alphaBeale = 0.1)
但它显示
Error in t(jeu) %*% jeu :
requires numeric/complex matrix/vector arguments
提前致谢。
【问题讨论】:
标签: r matrix cluster-computing distance-matrix