层次聚类最佳簇数量的划分
1、Gap Statistic 方法
gap_stat <- clusGap(as.data.frame(Fdist), FUN = hclust, K.max = 10, B = 50)
#Fdist为距离矩阵,FUN选择聚类的算法是hclust
(层次聚类)还是kmeans
(k-means 聚类),Gap Statistic 会计算从 1 到 KmaxK_{\text{max}}Kmax 的聚类效果,B指定计算 Gap Statistic 时生成的参考数据集(无结构数据)的数量,参考数据集是随机生成的,用于估计无聚类情况下的均值。B值越大,结果越稳健,但计算时间也会增加
plot(gap_stat, frame = FALSE, xlab = "Number of Clusters")
#最佳簇数为 Gap 值最大的点,或 Gap 值第一次达到平稳的点
2、轮廓系数
hc <- hclust(as.dist(Fdist), method = "complete")
for(i in 3:20){
clusters <- cutree(hc, k = i)
silhouette_scores <- silhouette(clusters, as.dist(Fdist))
print(i)
print(mean(silhouette_scores[, 3]))
}