Revisiter les données de gros : « meilleur » k
À la fin du chapitre 2, vous avez exploré les données d'un distributeur en gros customers_spend à l'aide du regroupement hiérarchique. Cette fois, vous analyserez ces données avec les outils de k-means présentés dans ce chapitre.
La première étape consiste à déterminer la valeur « optimale » de k à l'aide de la largeur moyenne de silhouette.
Petit rappel sur les données : elles contiennent les montants dépensés par 45 clients d'un distributeur en gros pour les catégories Milk, Grocery et Frozen. Ces données sont stockées dans la trame de données customers_spend. Pour cet exercice, vous pouvez supposer que, comme toutes les variables représentent le même type de mesure (montant dépensé), il n'est pas nécessaire de les normaliser.
Cette activité fait partie du cours
Analyse de regroupements dans R
Instructions de l’exercice
- Utilisez
map_dbl()pour exécuterpam()sur les donnéescustomers_spendpour des valeurs de k allant de 2 à 10 et extraire la largeur moyenne de silhouette de chaque modèle :model$silinfo$avg.width. Stockez le vecteur obtenu danssil_width. - Créez une nouvelle trame de données
sil_dfcontenant les valeurs de k et le vecteur des largeurs moyennes de silhouette. - À partir des valeurs de
sil_df, tracez un graphique linéaire montrant la relation entre k et la largeur moyenne de silhouette.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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)