Filtrer les variables fortement corrélées
Vous allez automatiser la suppression des variables fortement corrélées dans l'ensemble de données numérique ANSUR. Vous calculerez la matrice de corrélation et filtrerez 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 identique à celle de B avec A), vous voudrez ignorer la moitié de la matrice afin de ne supprimer qu'une seule des deux variables corrélées. Utilisez pour cela une astuce de masque.
Cette activité fait partie du cours
Réduction de dimensionnalité en Python
Instructions de l’exercice
- Calculez la matrice de corrélation de
ansur_dfet prenez la valeur absolue de cette matrice. - Créez un masque booléen avec des valeurs
Truedans 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 répertoriées dans
to_drop.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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.")