Techniques d'échantillonnage pour l'exploration de données

Jeu de données iris

Cet article utilise le jeu de données intégré iris en R, contenant 150 échantillons de fleurs d'iris avec cinq variables :

  • Sepal.Length : longueur du sépale
  • Sepal.Width : largeur du sépale
  • Petal.Length : longueur du pétale
  • Petal.Width : largeur du pétale
  • Species : espèce de la fleur (setosa, versicolor, virginica)

Chargement des données

Pour commencer, chargeons le jeu de données et affichons ses premières lignes :

# Charger les données
donnees <- iris

# Voir les premières lignes
head(donnees)

Échantillonnage aléatoire simple

L'échantillonnage aléatoire simple sélectionne des observations avec une probabilité égale. Il peut être effectué avec ou sans remise.

Échantilonnage avec remise

Ici, nous tirons 5 échantillons où une observation peut apparaître plusieurs fois :

# Fixer la graine aléatoire pour la reproductibilité
set.seed(456)

# Sélectionner 5 indices avec remise
indices_rep <- sample(seq_len(nrow(donnees)), size = 5, replace = TRUE)

# Extraire les échantillons
echantillon_rep <- donnees[indices_rep, ]
print(echantillon_rep)

Le paramètre replace = TRUE active le remplacement.

Échantillonnage sans remise

Dans ce cas, chaque observation ne peut être sélectionnée qu'une seule fois :

indices_sans_rep <- sample(seq_len(nrow(donnees)), size = 5, replace = FALSE)

echantillon_sans_rep <- donnees[indices_sans_rep, ]
print(echantillon_sans_rep)

Ici, replace = FALSE est la valeur par défaut.

Échantillonnage stratifié

Cette méthode divise la population en sous-groupes homogènes (strates) et échantillonne dans chaque strate. Dans notre jeu de données, nous stratifions par Species.

Nous allons prélever 2 observations par espèce en utilisant le package dplyr :

library(dplyr)

echantillon_stratifie <- donnees %>%
  group_by(Species) %>%
  slice_sample(n = 2)

print(echantillon_stratifie)

La fonction slice_sample() remplace sample_n() dans les versions récentes de dplyr. L'opérateur %>% est un tuyau pour chaîner les opérations.

Échantillonnage par grappe

Dans l'échantillonnage par grappe, on sélectionne d'abord un groupe (grappe) aléatoire, puis on prend toutes les observations de ce groupe. Ici, chaque espèce constitue une grappe.

# Obtenir les espèces uniques
especes_uniques <- unique(donnees$Species)

# Choisir une espèce au hasard
grappe_choisie <- sample(especes_uniques, 1)

# Extraire toutes les observations de cette espèce
echantillon_grappe <- subset(donnees, Species == grappe_choisie)

print(echantillon_grappe)

Nous utilisons unique() pour lister les espèces distinctes et subset() pour filtrer les données.

Séparation en ensembles d'entraînement et de test

Pour la modélisation, les données sont souvent divisées en ensembles d'entraînement (75%) et de test (25%) :

set.seed(789)

# Générer des indices pour l'ensemble d'entraînement
taille_entraînement <- round(0.75 * nrow(donnees))
indices_entraînement <- sample(seq_len(nrow(donnees)), size = taille_entraînement)

# Créer les ensembles
ensemble_entraînement <- donnees[indices_entraînement, ]
ensemble_test <- donnees[-indices_entraînement, ]

# Vérifier les tailles
cat("Taille de l'ensemble d'entraînement :", nrow(ensemble_entraînement), "\n")
cat("Taille de l'ensemble de test :", nrow(ensemble_test), "\n")

L'opérateur - dans l'indexation exclut les indices spécifiés.

Étiquettes: R échantillonnage exploration de données Machine Learning iris

Publié le 9 juin à 03h51