Как выбрать пороги корреляции при отборе признаков?

Всем привет.

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

На скрине приведена корреляция Спирмена между признаками: введите сюда описание изображения

Я планирую выбрать верхний порог (например 0,75) и нижний порог (например -0,75). И если корреляция между двумя признаками выходит за пределы интервалы (0,75, -0,75), то я рандомно удаляю один из них.

Вопрос1: Так отбирать признаки в принципе корректно или нет?

Вопрос2: Как выбрать данные пороги?


Ответы (1 шт):

Автор решения: D.Vinogradov

По поводу нахождения порогов по корреляции - в свое время использовал функцию, которую таскал от "данных" к "данным"

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]

здесь на вход подается ваш фрейм и порог.

(учитывается и положительное и отрицательное значение, поэтому указывайте только положительное)

На выходе получаете коррелирующие столбцы и их коэффициент.

→ Ссылка