gpt4 book ai didi

r - 如何从不同(戴安娜,簇R包)输出中获得最佳簇数?

转载 作者:行者123 更新时间:2023-12-04 03:58:41 25 4
gpt4 key购买 nike

我试图从使用集群包和戴安娜方法(使用欧几里德相异性)获得的树状图中获得最佳集群数,如下所示:

mydatad <- diana(mydata, stand = FALSE)
mydata_dend <- fviz_dend(mydatad, cex = 0.5, k = 2, palette = "jco")
## use factoextra and ggplot2 for visualization
然后我尝试使用 NbClust 的相异矩阵:
NC <- NbClust(data = NULL, diss = mydatadd, distance = NULL, min.nc = 2, max.nc = 50, method= "single", index = "silhouette")
我收到此错误消息”:
Error in if (is.na(n) || n > 65536L) stop("size cannot be NA nor exceed 65536") : 
missing value where TRUE/FALSE needed
但是我的数据没有缺失值,对于相同的元素,dissim 矩阵中的最低值应该是 0(mydata 是 ~2000 个元素,11 个变量)。
然后我尝试估计 dissim 。距离使用原始数据并估计欧氏距离,因此不使用相异矩阵
NC <- NbClust(T2141d, diss = NULL, distance = "euclidean", min.nc = 2, max.nc = 50, method= "single", index = "silhouette")
我收到以下错误消息:
Error in t(jeu) %*% jeu : 
requires numeric/complex matrix/vector arguments
欢迎任何建议,甚至建议使用不同的方法来获得最佳集群数。谢谢。

最佳答案

NbClust 函数需要一个相异矩阵。当您运行 diana 时,返回的对象不是相异矩阵,尽管它是计算出来的。您需要设置 keep.diss=TRUE 。在我展示如何使用示例数据集返回相异矩阵之前:

library(factoextra)
library(cluster)
mydata=data.frame(matrix(runif(2000*11),ncol=11))
mydatad <- diana(mydata, stand = FALSE,keep.diss=TRUE)
# check the dissimilarity matrix stored
class(mydatad$diss)
[1] "dissimilarity" "dist"

NC <- NbClust(data = NULL, diss = mydatad$diss,
distance = NULL, min.nc = 2, max.nc = 50,
method= "single", index = "silhouette")

关于r - 如何从不同(戴安娜,簇R包)输出中获得最佳簇数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63439773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com