K-means:平均轮廓宽度
层次聚类得到 3 个簇,而肘部法则建议 2 个簇。本练习将使用平均轮廓宽度来探索 k 的"最佳"取值应为多少。
本练习是课程的一部分
R 中的聚类分析
练习说明
- 使用
map_dbl()在k取值为 2 到 10 的范围内,对oes数据运行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)