Фільтрування ознак із високою кореляцією
Ви автоматизуєте видалення ознак із високою кореляцією в числовому наборі даних ANSUR. Ви обчислите матрицю кореляцій і відфільтруєте стовпці, у яких коефіцієнт кореляції більше за 0,95 або менше за -0,95.
Оскільки кожен коефіцієнт кореляції трапляється в матриці двічі (кореляція A з B дорівнює кореляції B з A), потрібно проігнорувати половину матриці кореляцій, щоб видаляти лише одну з двох скорельованих ознак. Для цього скористайтеся маскою.
Ця вправа є частиною курсу
Зменшення розмірності в Python
Інструкції до вправи
- Обчисліть матрицю кореляцій
ansur_dfі візьміть абсолютні значення елементів цієї матриці. - Створіть булеву маску зі значеннями
Trueу верхньому правому трикутнику та застосуйте її до матриці кореляцій. - Встановіть поріг коефіцієнта кореляції
0.95. - Видаліть із датафрейму всі стовпці, перелічені в
to_drop.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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.")