r - 如何确定使用 R 进行 kamila 聚类的最佳聚类数?
问题描述
我有一个混合类型的数据集,所以我想尝试kamila
聚类。应用它很容易,但我想要一个类似于膝盖图的图来决定集群的数量。
data <- read.csv("binarymat.csv",header=FALSE,sep=";")
conInd <- c(9)
conVars <- data[,conInd]
conVars <- data.frame(scale(conVars))
catVarsFac <- data[,c(1,2,3,4,5,6,7,8)]
catVarsFac[] <- lapply(catVarsFac, factor)
catVarsDum <- dummyCodeFactorDf(catVarsFac)
kamRes <- kamila(conVars, catVarsFac, numClust=5, numInit=10,
calcNumClust = "ps",numPredStrCvRun = 10, predStrThresh = 0.5)
summary(kamRes)
它说最好的集群数是 5。它是如何决定的,我可以看到一个表明这一点的图吗?
解决方案
在kamila
包文档中
将 calcNumClust 设置为 'ps' 使用 Tibshirani & Walther (J. of Comp. and Graphical Stats. 14(3), 2005) 的预测强度方法。估计聚类数量没有完美的方法;与大样本量的基于 BIC 的方法相比,PS 倾向于给出更小的数字。
在这种情况下,您正在使用它,您只为 指定了一个值numClust
。所以,看起来你实际上并没有选择集群的数量——你已经选择了一个。
要选择聚类数,您必须指定您感兴趣的范围,例如,numClust = 2 : 7
选择聚类数的方法。
如果您还想选择集群的数量,类似以下的方法可能会起作用。
kamRes <- kamila(conVars, catVarsFac, numClust = 2 : 7, numInit = 10,
calcNumClust = "ps", numPredStrCvRun = 10, predStrThresh = 0.5)
关于选择集群数量的信息现在出现在 中
kamRes$nClust
,并且plot(2:7, kamRes$nClust$psValues)
可能是您所追求的。
推荐阅读
- r - 由于重新排序,缩放 x 轴不起作用?
- android-studio - Android Emulator 关闭,因为 emuglConfig_init: blacklisted=0 , GPI emulation enabled using 'swiftshader_indirect' mode
- javascript - 如何使用 react-native-render-html 从 Raw HTML 转换数据并将其自定义为 React Native 中的省略号
- c# - 通过字符串匹配跳过记录
- jenkins - Jenkins 使用 SLURM 按需构建代理
- c# - C# Selenium WebDriverWait 似乎没有在等待
- amazon-web-services - AWS ALB 终端节点返回 404
- c# - 如何在 Xamarin 上创建证书签名请求
- java - 如何使用 rest api 或 java sdk 获取 azure 存储帐户列表关闭 azure 防御者
- javascript - 为什么 Json 的 Stringify 输出打印与 console.log 输出不同?