NbClust包提供了衆多的指數來肯定一個在聚類分析裏類的最佳數目,但並不能保證得出的結果都同樣,只能作爲選擇聚類個數 K 的參考ide
NbClust()函數函數
a、輸入須要作的 聚類的矩陣或者數據框idea
b、使用的距離測度和聚類方法spa
c、並考慮最小和最大聚類的個數進行聚類code
它返回每個聚類指數,同時輸出建議聚類的最佳數目it
處理養分數據的平均聯動聚類io
library(NbClust) nc <- NbClust(nutrient.scaled, distance="euclidean", min.nc=2, max.nc=15, method="average") par(opar) #還原圖形的設置 table(nc$Best.n[1,]) barplot(table(nc$Best.n[1,]), #效果圖以下 xlab="Numer of Clusters", ylab="Number of Criteria", main="Number of Clusters Chosen by 26 Criteria")
試着用個數最多的聚類個數最多的(2,3,5,15)並選擇其中一個使得解釋最有意義table
clusters <- cutree(fit.average,k=5) #cutree把樹狀圖分爲5類 #對類進行可視化和解讀 table(clusters) # k=5,那麼每類下面幾個觀測值 aggregate(nutrient,by=list(cluster=clusters),median) #獲取每類的中位數 aggregate(as.data.frame(nutrient.scaled),by=list(cluster=clusters),median) #標準化後的,能夠理解爲兩類的中位數,結果有原始度量和標準度量 plot(fit.average, hang=-1, cex=.8, #繪圖以下 main="Average Linkage Clustering\n5 Cluster Solution") rect.hclust(fit.average, k=5)#疊加5類的解決方案