开始使用免费开始使用

重访批发数据:"最佳" k

第 2 章的结尾,您使用层次聚类探索了批发分销商数据 customers_spend。这一次,您将用本章介绍的 k-means 聚类工具来分析同一数据。

第一步是使用平均轮廓系数(average silhouette width)来确定"最佳"的 k 值。

先回顾一下数据:它包含某批发分销商 45 位不同客户在MilkGroceryFrozen 三类食品上的花费记录。数据存放在数据框 customers_spend 中。本练习中,您可以假设数据类型一致(都是消费金额),因此无需进行缩放。

本练习是课程的一部分

R 中的聚类分析

查看课程

练习说明

  • 使用 map_dbl() 在 k 从 2 到 10 的范围内,对 customers_spend 运行 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(x = ___, 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)
编辑并运行代码