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
Instructions
- 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 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.")