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类的解决方案