CommencerCommencer gratuitement

Aspects pratiques : travailler avec des données réelles

Travailler avec des données réelles est souvent plus difficile qu’avec des données synthétiques. Les données synthétiques aident à assimiler de nouveaux concepts et techniques, mais les prochains exercices porteront sur des données plus proches de ce que vous pourriez rencontrer dans vos activités professionnelles ou académiques.

Premier défi avec les données Pokemon : il n’y a pas de nombre de clusters préétabli. Vous allez déterminer le nombre de clusters approprié, en gardant à l’esprit qu’avec des données réelles, le « coude » du scree plot est souvent moins marqué que pour des données synthétiques. Utilisez votre jugement pour décider du nombre de clusters.

La seconde partie de cet exercice consiste à tracer les résultats du clustering sur deux dimensions (ou caractéristiques) des données. Ces caractéristiques ont été choisies de manière assez arbitraire pour cet exercice. Réfléchissez à la façon dont vous pourriez utiliser les graphiques et le clustering pour présenter des groupes intéressants de Pokemon à d’autres personnes.

Note supplémentaire : cet exercice utilise l’argument iter.max de kmeans(). Comme vous l’avez vu, kmeans() est un algorithme itératif qui se répète jusqu’à ce qu’un critère d’arrêt soit atteint. Le nombre d’itérations par défaut de kmeans() est 10, ce qui n’est pas suffisant pour que l’algorithme converge et atteigne son critère d’arrêt ; nous allons donc le fixer à 50 pour contourner ce problème. Pour voir ce qui se passe quand kmeans() ne converge pas, essayez d’exécuter l’exemple avec un nombre d’itérations plus faible (p. ex. 3). C’est un autre exemple de ce qui peut se produire lorsque vous travaillez avec des données réelles et des cas concrets.

Cet exercice fait partie du cours

Apprentissage non supervisé en R

Afficher le cours

Instructions

Le jeu de données pokemon, qui contient des observations sur 800 personnages Pokemon selon 6 dimensions (c.-à-d. des caractéristiques), est disponible dans votre espace de travail.

  • À l’aide de kmeans() avec nstart = 20, calculez la somme totale des erreurs intra-cluster (within sum of squares) pour différents nombres de clusters (entre 1 et 15).
  • Choisissez un nombre de clusters approprié d’après ces résultats de la première consigne et affectez cette valeur à k.
  • Créez un modèle k-means avec k clusters et affectez-le à la variable km.out.
  • Créez un nuage de points de Defense en fonction de Speed, en affichant l’appartenance au cluster pour chaque observation.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Initialize total within sum of squares error: wss
wss <- 0

# Look over 1 to 15 possible clusters
for (i in ___) {
  # Fit the model: km.out
  km.out <- kmeans(___, centers = ___, nstart = ___, iter.max = 50)
  # Save the within cluster sum of squares
  wss[i] <- ___
}

# Produce a scree plot
plot(1:15, wss, type = "b", 
     xlab = "Number of Clusters", 
     ylab = "Within groups sum of squares")

# Select number of clusters
k <- ___

# Build model with k clusters: km.out
km.out <- kmeans(___, centers = ___, nstart = ___, iter.max = 50)

# View the resulting model
km.out

# Plot of Defense vs. Speed by cluster membership
plot(pokemon[, c("Defense", "Speed")],
     col = km.out$cluster,
     main = paste("k-means clustering of Pokemon with", k, "clusters"),
     xlab = "Defense", ylab = "Speed")
Modifier et exécuter le code