Revoir les données de gros : « meilleur » k
À la fin du chapitre 2, vous avez exploré les données d’un grossiste, customers_spend, à l’aide du regroupement hiérarchique. Cette fois, vous allez analyser 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 en utilisant la largeur moyenne de silhouette.
Petit rappel sur les données : elles contiennent les montants dépensés par 45 clients d’un grossiste dans les catégories Milk, Grocery et Frozen. Ces informations sont stockées dans la trame de données customers_spend. Pour cet exercice, vous pouvez partir du principe que, comme toutes les données sont du même type (montant dépensé), vous n’avez pas besoin de les mettre à l’échelle.
Cet exercice fait partie du cours
Analyse de clusters avec R
Instructions
- Utilisez
map_dbl()pour exécuterpam()sur les donnéescustomers_spendpour des valeurs de k allant de 2 à 10 et extrayez la largeur moyenne de silhouette de chaque modèle :model$silinfo$avg.width. Stockez le vecteur obtenu danssil_width. - Construisez 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 en lignes montrant la relation entre k et la largeur moyenne de silhouette.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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)