R語言 層次聚類(系統聚類)
阿新 • • 發佈:2019-01-31
層次聚類試圖在不同層次對資料集進行劃分
library(NbClust) data(nutrient, package = 'flexclust') row.names(nutrient) <- tolower(row.names(nutrient)) nutrient.scale <- scale(nutrient) d <- dist(nutrient.scale) fit.average <- hclust(d,method = "average") # 休伯特指數是確定聚類數量的圖形方法。 在休伯特指數圖中,我們尋求一個顯著的膝蓋, # 這個指標相當於該指標值的顯著增加,即休伯特指數第二差異圖中的重要峰值。 # 確定層次聚類的個數,如果是有幾個合適的聚類個數,需確定是需要分類的個數少還是分類個數多 nc <- NbClust(nutrient.scale, distance = "euclidean", min.nc = 2, max.nc = 15, method = "average") # 包NbClust table(nc$Best.nc[1,]) barplot(table(nc$Best.nc[1,])) # plot plot(fit.average, hang = -1,cex = .8) rect.hclust(fit.average, k = 5) # 在圖上畫出聚類個數 # 在確定好層次個數之後計算每個層次的個數 clusters <- cutree(fit.average, k = 5) table(clusters) # 各層次的個數