CommencerCommencer gratuitement

Filtrer les variables fortement corrélées

Vous allez automatiser la suppression des variables fortement corrélées dans le jeu de données numérique ANSUR. Vous allez calculer la matrice de corrélation et filtrer les colonnes dont le coefficient de corrélation est supérieur à 0,95 ou inférieur à -0,95.

Comme chaque coefficient de corrélation apparaît deux fois dans la matrice (la corrélation de A avec B est égale à celle de B avec A), vous souhaitez ignorer la moitié de la matrice afin de ne supprimer qu’une des deux variables corrélées. Utilisez pour cela une astuce de masque.

Cet exercice fait partie du cours

Réduction de dimension en Python

Afficher le cours

Instructions

  • Calculez la matrice de corrélation de ansur_df et prenez la valeur absolue de cette matrice.
  • Créez un masque booléen avec des valeurs True dans le triangle supérieur droit et appliquez-le à la matrice de corrélation.
  • Fixez le seuil du coefficient de corrélation à 0.95.
  • Supprimez du DataFrame toutes les colonnes listées dans to_drop.

Exercice interactif pratique

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

# Calculate the correlation matrix and take the absolute value
corr_df = ansur_df.____().____()

# Create a True/False mask and apply it
mask = np.____(np.____(corr_df, dtype=____))
tri_df = corr_df.____(mask)

# List column names of highly correlated features (r > 0.95)
to_drop = [c for c in tri_df.columns if any(tri_df[c] >  ____)]

# Drop the features in the to_drop list
reduced_df = ansur_df.____(____, axis=1)

print(f"The reduced_df DataFrame has {reduced_df.shape[1]} columns.")
Modifier et exécuter le code