開始使用免費開始

回到批發資料:最佳的 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)
編輯並執行程式碼