Kom igångKom igång gratis

Tillbaka till grossistdata: "Bästa" k

I slutet av Kapitel 2 analyserade du grossistdistributörens data customers_spend med hjälp av hierarkisk klustring. Nu ska du analysera samma data med de k-means-verktyg som tagits upp i det här kapitlet.

Första steget är att bestämma det "bästa" värdet på k med hjälp av genomsnittlig silhuettbredd.

En snabb påminnelse om data: det innehåller uppgifter om hur mycket 45 olika kunder hos en grossistdistributör har spenderat på livsmedelskategorierna Mjölk, Livsmedel & Fryst. Dessa data finns lagrade i dataramen customers_spend. I den här övningen kan du utgå från att du inte behöver skala data, eftersom alla värden är av samma typ (belopp spenderat).

Den här övningen är en del av kursen

Klusteranalys i R

Visa kurs

Övningsinstruktioner

  • Använd map_dbl() för att köra pam()customers_spend-data för k-värden från 2 till 10, och extrahera värdet för genomsnittlig silhuettbredd från varje modell: model$silinfo$avg.width. Spara den resulterande vektorn som sil_width.
  • Skapa en ny dataram sil_df som innehåller värdena för k och vektorn med genomsnittliga silhuettbredder.
  • Använd värdena i sil_df för att rita ett linjediagram som visar sambandet mellan k och genomsnittlig silhuettbredd.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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)
Redigera och kör kod