Filtrare le feature altamente correlate
Automatizzerai la rimozione delle feature altamente correlate nell'insieme di dati numerici ANSUR. Calcolerai la matrice di correlazione e filtrerai le colonne che hanno un coefficiente di correlazione maggiore di 0.95 o minore di -0.95.
Poiché ogni coefficiente di correlazione compare due volte nella matrice (la correlazione di A con B è uguale a quella di B con A), vorrai ignorare metà della matrice di correlazione in modo che venga rimossa solo una delle due feature correlate. Usa un trucco con una maschera per questo scopo.
Questo esercizio fa parte del corso
Riduzione della dimensionalità in Python
Istruzioni dell'esercizio
- Calcola la matrice di correlazione di
ansur_dfe prendine il valore assoluto. - Crea una maschera booleana con valori
Truenel triangolo superiore destro e applicala alla matrice di correlazione. - Imposta la soglia del coefficiente di correlazione a
0.95. - Elimina dal DataFrame tutte le colonne elencate in
to_drop.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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.")