CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Utilisez map_dbl() pour exécuter pam() sur les données customers_spend pour 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 dans sil_width.
  • Créez une nouvelle trame de données sil_df contenant 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)
Modifier et exécuter le code