Sterk gecorreleerde features eruit filteren
Je gaat het verwijderen van sterk gecorreleerde features in de numerieke ANSUR-gegevensset automatiseren. Je berekent de correlatiematrix en filtert kolommen weg met een correlatiecoëfficiënt groter dan 0,95 of kleiner dan -0,95.
Omdat elke correlatiecoëfficiënt twee keer in de matrix voorkomt (de correlatie van A met B is gelijk aan die van B met A), wil je de helft van de correlatiematrix negeren zodat slechts één van de twee gecorreleerde features wordt verwijderd. Gebruik hiervoor een mask-truc.
Deze oefening maakt deel uit van de cursus
Dimensionality Reduction in Python
Oefeninstructies
- Bereken de correlatiematrix van
ansur_dfen neem de absolute waarde van deze matrix. - Maak een booleaanse mask met
True-waarden in de rechterboven-driehoek en pas die toe op de correlatiematrix. - Zet de drempel voor de correlatiecoëfficiënt op
0.95. - Drop alle kolommen die in
to_dropstaan uit de DataFrame.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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.")