Есть ли способ, как автоматически выбирать только объекты с хорошей корреляцией из большого набора данных?

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

У меня есть набор данных с более чем 50 столбцами, и я хотел бы удалить объекты с низкой корреляцией относительно целевого объекта с помощью цикла, поэтому мне не нужно удалять их вручную.

Я пытался:

 for feature in df:
        if df[feature].corr() < threshold: df.drop(feature, axis=1, inplace=True)
  

… который, очевидно, не работает.
Я совсем новичок в Python.

Совет был бы оценен.

Ответ №1:

Предполагая, что цель находится в df['y'] :

 df = pd.DataFrame({
    'a': range(500),
    'b': np.random.randint(0, 500, 500),
    'c': range(500),
    'd': np.random.randint(0, 500, 500),
    'y': range(500)})

threshold = 0.5
for feature in [c for c in df.columns if c != 'y']:
    if abs(df[feature].corr(df['y'])) < threshold:
        del df[feature]

df.head()
  

Вывод:

    a  c  y
0  0  0  0
1  1  1  1
2  2  2  2
3  3  3  3
4  4  4  4
  

Комментарии:

1. Обновлен цикл, чтобы исключить y сам столбец — эта корреляция, очевидно, равна 1

2. Отлично работает! Спасибо.