Filtrera bort starkt korrelerade särdrag
Nu ska du automatisera borttagningen av starkt korrelerade särdrag i det numeriska ANSUR-datasetet. Du beräknar korrelationsmatrisen och filtrerar bort kolumner med en korrelationskoefficient som överstiger 0,95 eller understiger -0,95.
Eftersom varje korrelationskoefficient förekommer två gånger i matrisen (korrelationen mellan A och B är densamma som mellan B och A) vill du ignorera hälften av korrelationsmatrisen, så att bara ett av de två korrelerade särdragen tas bort. Använd ett maskeringstrick för detta ändamål.
Den här övningen är en del av kursen
Dimensionsreduktion i Python
Övningsinstruktioner
- Beräkna korrelationsmatrisen för
ansur_dfoch ta absolutvärdet av matrisen. - Skapa en boolesk mask med
True-värden i det övre högra triangelområdet och applicera den på korrelationsmatrisen. - Sätt tröskelvärdet för korrelationskoefficienten till
0.95. - Ta bort alla kolumner i listan
to_dropfrån DataFrame.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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.")