Usuwanie silnie skorelowanych cech
Zautomatyzujesz usuwanie silnie skorelowanych cech w liczbowym zbiorze danych ANSUR. Obliczysz macierz korelacji i odfiltrowania kolumny, których współczynnik korelacji przekracza 0.95 lub jest mniejszy niż -0.95.
Ponieważ każdy współczynnik korelacji pojawia się w macierzy dwukrotnie (korelacja A z B jest równa korelacji B z A), warto pominąć połowę macierzy korelacji – dzięki temu usunięta zostanie tylko jedna z dwóch skorelowanych cech. Użyj do tego celu triku z maską.
To ćwiczenie jest częścią kursu
Redukcja wymiarowości w Pythonie
Instrukcje do ćwiczenia
- Oblicz macierz korelacji dla
ansur_dfi zastosuj wartość bezwzględną tej macierzy. - Utwórz maskę logiczną z wartościami
Truew górnym prawym trójkącie i zastosuj ją do macierzy korelacji. - Ustaw próg współczynnika korelacji na
0.95. - Usuń z DataFrame'u wszystkie kolumny wymienione w
to_drop.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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.")