#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
сам столбец — эта корреляция, очевидно, равна 12. Отлично работает! Спасибо.