我必须对大量数据执行聚类分析。由于我有很多缺失值,因此我建立了一个相关矩阵。
corloads = cor(df1[,2:185], use = "pairwise.complete.obs")
现在我有问题如何继续。我阅读了很多文章和示例,但没有任何内容真正适合我。如何找出对我有好处的集群?
我已经尝试过了:
dissimilarity = 1 - corloads
distance = as.dist(dissimilarity)
plot(hclust(distance), main="Dissimilarity = 1 - Correlation", xlab="")
我得到了一个情节,但它非常混乱,我不知道该如何阅读以及如何进行。看起来像这样:
知道如何改善吗?我到底能从中得到什么呢?
我还想创建一个Screeplot。我读到会有一条曲线,您可以在其中看到多少个正确的聚类。
我还进行了聚类分析,并选择了2-20个聚类,但是结果是如此之长,我不知道如何处理以及看什么很重要。
为了确定“最佳簇数”,尽管有争议,但仍可以使用几种方法。
这kgs
有助于获得最佳的群集数量。
按照您的代码可以:
clus <- hclust(distance)
op_k <- kgs(clus, distance, maxclus = 20)
plot (names (op_k), op_k, xlab="# clusters", ylab="penalty")
因此,根据kgs
函数,最佳聚类数是的最小值op_k
,如您在图中所见。你可以用它
min(op_k)
请注意,我将允许的最大群集数设置为20。您可以将此参数设置为NULL
。
检查此页面以获取更多方法。
希望对您有帮助。
要找到最佳的群集数量,您可以执行以下操作
op_k[which(op_k == min(op_k))]
另请参阅这篇文章以找到@Ben的完美图形答案
op_k[which(op_k == min(op_k))]
仍然会罚款。要找到最佳群集数,请使用
as.integer(names(op_k[which(op_k == min(op_k))]))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句