Wholesale-Daten neu betrachtet: „bestes" k
Am Ende von Kapitel 2 hast du die Daten des Großhändlers customers_spend mit hierarchischem Clustering untersucht. Diesmal analysierst du dieselben Daten mit den in diesem Kapitel behandelten k-means-Methoden.
Zuerst bestimmst du den „besten" Wert für k anhand der durchschnittlichen Silhouettenbreite.
Zur Erinnerung an die Daten: Sie enthalten Ausgaben von 45 verschiedenen Kund:innen eines Großhändlers in den Lebensmittelkategorien Milk, Grocery und Frozen. Das steht im Data Frame customers_spend. Für diese Aufgabe kannst du annehmen, dass die Daten alle vom gleichen Typ sind (Ausgaben), daher ist kein Skalieren nötig.
Diese Übung ist Teil des Kurses
<Kurs>Clusteranalyse in R</Kurs>Übungsanweisungen
- Verwende
map_dbl(), umpam()auf dencustomers_spend-Daten für k-Werte von 2 bis 10 auszuführen, und extrahiere aus jedem Modell die durchschnittliche Silhouettenbreite:model$silinfo$avg.width. Speichere den resultierenden Vektor alssil_width. - Erstelle einen neuen Data Frame
sil_df, der die k-Werte und den Vektor der durchschnittlichen Silhouettenbreiten enthält. - Nutze die Werte in
sil_df, um ein Liniendiagramm zu zeichnen, das den Zusammenhang zwischen k und durchschnittlicher Silhouettenbreite zeigt.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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)