Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Bereken de correlatiematrix van ansur_df en 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_drop staan 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.")
Code bewerken en uitvoeren