![](/img/trans.png)
[英]How to find optimal number of clusters in hierarchical clustering using Gap statistic?
[英]How to get gap statistic for hierarchical average clustering
我基於“平均鏈接”執行層次聚類分析在基礎 r 中,我使用
dist_mat <- dist(cdata, method = "euclidean")
hclust_avg <- hclust(dist_mat, method = "average")
我想計算差距統計數據以確定最佳集群數。 我使用“集群”庫和 clusGap function。 由於我無法通過 hclust 解決方案,也無法在 clusGap function 中指定平均層次聚類,因此我使用以下幾行:
cluster_fun <- function(x, k) list(cluster = cutree(hclust(dist(x, method = "euclidean"), method="average"), k = k))
gap_stat <- clusGap(cdata, FUN=cluster_fun, K.max=10, B=50)
print(gap_stat)
但是,這里我無法檢查集群解決方案。 所以,我的問題是 - 我可以確定差距統計是在與 hclust_avg 相同的解決方案上計算的嗎?
有沒有更好的方法來做到這一點?
是的,應該是一樣的。 在 clusGap function 中,它為您提供的每個 k 調用 cluster_fun,然后計算集群內的池化平方和,如本文所述,這是調用自定義 function 的 clusGap 內部調用的代碼位:
W.k <- function(X, kk) {
clus <- if (kk > 1)
FUNcluster(X, kk, ...)$cluster
else rep.int(1L, nrow(X))
0.5 * sum(vapply(split(ii, clus), function(I) {
xs <- X[I, , drop = FALSE]
sum(dist(xs)^d.power/nrow(xs))
}, 0))
}
並從這里計算差距統計數據。
您可以使用一些自定義代碼計算間隙統計信息,但為了重現性等,使用它可能更容易?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.