Aan de slagBegin gratis

Wholesale-gegevens opnieuw bekijken: "Beste" k

Aan het einde van Hoofdstuk 2 heb je de wholesale-gegevens customers_spend verkend met hiërarchische clustering. Deze keer analyseer je deze gegevens met de k-means-clusteringtools uit dit hoofdstuk.

De eerste stap is het bepalen van de "beste" waarde voor k met behulp van de gemiddelde silhouettebreedte.

Even het geheugen opfrissen over de data: deze bevat voor 45 verschillende klanten van een groothandel de bestedingen aan de voedselcategorieën Milk, Grocery en Frozen. Dit staat in de data frame customers_spend. Voor deze oefening mag je aannemen dat alle gegevens van hetzelfde type zijn (bedrag besteed) en dat je ze niet hoeft te schalen.

Deze oefening maakt deel uit van de cursus

Clusteranalyse in R

Bekijk cursus

Oefeninstructies

  • Gebruik map_dbl() om pam() uit te voeren op de customers_spend-gegevens voor k-waarden van 2 tot en met 10 en haal de waarde van de gemiddelde silhouettebreedte uit elk model: model$silinfo$avg.width. Sla de resulterende vector op als sil_width.
  • Bouw een nieuwe data frame sil_df met de k-waarden en de vector met gemiddelde silhouettebreedtes.
  • Gebruik de waarden in sil_df om een lijndiagram te maken dat de relatie tussen k en de gemiddelde silhouettebreedte laat zien.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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)
Code bewerken en uitvoeren