Как выбрать пороги корреляции при отборе признаков?
Всем привет.
Решаю задачу кластеризации и моя цель - уменьшить размерность данных, т.е. избавится от ненужных признаков (не использую PCA, т.к. хочу сохранить оригинальные фичи для последующего анализа).
На скрине приведена корреляция Спирмена между признаками:

Я планирую выбрать верхний порог (например 0,75) и нижний порог (например -0,75). И если корреляция между двумя признаками выходит за пределы интервалы (0,75, -0,75), то я рандомно удаляю один из них.
Вопрос1: Так отбирать признаки в принципе корректно или нет?
Вопрос2: Как выбрать данные пороги?
Ответы (1 шт):
По поводу нахождения порогов по корреляции - в свое время использовал функцию, которую таскал от "данных" к "данным"
def correl(X_train, thresh):
cor = X_train.corr()
c1 = cor.stack().sort_values(ascending=False).drop_duplicates()
all_cor = c1[c1.values != 1]
return all_cor[abs(all_cor) > thresh]
здесь на вход подается ваш фрейм и порог.
(учитывается и положительное и отрицательное значение, поэтому указывайте только положительное)
На выходе получаете коррелирующие столбцы и их коэффициент.