K-means:平均輪廓係數寬度
階層式分群得到 3 個群,而肘部法則則建議 2 個。在本練習中,使用「平均輪廓係數寬度」來探索 k 的「最佳」取值應該是多少。
本練習屬於課程
R 的叢集分析
練習說明
- 使用
map_dbl()以oes資料對 k 從 2 到 10 的取值執行pam(),並從每個模型中擷取 平均輪廓係數寬度:model$silinfo$avg.width。 將結果向量儲存為sil_width。 - 建立新的資料框
sil_df,其中包含 k 的取值與對應的「平均輪廓係數寬度」向量。 - 使用
sil_df中的數值繪製折線圖,呈現 k 與 平均輪廓係數寬度 之間的關係。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Use map_dbl to run many models with varying value of k
sil_width <- map_dbl(2:10, function(k){
model <- pam(___, k = ___)
model$silinfo$avg.width
})
# Generate a data frame containing both k and sil_width
sil_df <- data.frame(
k = ___,
sil_width = ___
)
# Plot the relationship between k and sil_width
ggplot(___, aes(x = ___, y = ___)) +
geom_line() +
scale_x_continuous(breaks = 2:10)