簡體   English   中英

具有相關矩陣的R聚類分析和樹狀圖

[英]R cluster analysis and dendrogram with correlation matrix

我必須對大量數據執行聚類分析。 由於我有很多缺失值,因此我建立了一個相關矩陣。

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))]))

我很高興了解kgs功能。 另一個選擇是使用dendextend包中的find_k函數(它使用平均輪廓寬度)。 但是考慮到kgs函數,我可能只是將其添加為軟件包的另一個選項。 還要注意dendextend :: color_branches函數,用最終選擇的簇數為樹狀圖着色(您可以在此處查看更多信息: https : //cran.r-project.org/web/packages/dendextend/vignettes /introduction.html#setting-a-dendrograms-branches

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM