Stack Overflow на русском Asked by Viktor Andriichuk on December 2, 2021
Как в DataFrame с колонками A, B, C, D (например) отсортировать колонки B, C, D от больше всего коррелирующих с A до менее всего корреллирующих?
Спрашиваю затем, чтобы научиться автоматизировать поиск самых подходящих для машинного обучения признаков X для поиска y. Следовательно, если, допустим, есть 100 признаков для X, а мне нужно взять 5-ть, которые более всего коррелируют с y, то не охота это делать руками (глазами), так как можно ошибиться. Проще же переложить это на программу.
Судя по вопросу, вы хотите выбрать наиболее важные/сильные признаки из набора X
, которые позволят предсказать значения в столбце y
. Корреляцию обычно расчитывают для противоположных целей - сильно коррелирующие признаки чаще всего ухудшают качество модели, поэтому от них стараются избавиться. В вашем случае вам надо выбрать наиболее важные признаки, т.е. те котороые максимально влияют на качество работы модели. Для этого существует несколько подходов:
Feature Importance
- ранжирование признаков по степени влияния на качество работы модели. Чаще всего для этого используют алгоритмы "решающих деревьев" или их ансамбли.Feature Selection
- выбор наиболее важных признаков.Dimensionality Reduction
- уменьшения размерности пространства признаков. Грубо говоря, мы проецируем вектора признаков в пространство с меньшей размерностью так, чтобы потерять минимум полезной информации. Это как создавать порошковый сок из фруктов - мы пытаемся оставить все самое ценное (экстракт) и избавиться от лишнего.PS корреляция не всегда способна уловить сложные зависимости и шаблоны. Например один из самых популярных алгоритмов расчёта коэффициента корреляции по Пирсону - способен найти только линейные зависимости между парой столбцов / признаков.
Answered by MaxU on December 2, 2021
Полностью если, то как-то так:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(1000,100))
df_corr = df.loc[:,df.columns[np.argsort(abs(df.corr()[0]))][-6:]]
Это если оставить и колонку 0, с которой смотрится корреляция. Могу и в 'ABCD...' колонки переписать, но думаю принцип понятен.
Answered by CrazyElf on December 2, 2021
Pandas, метод df.corr()
Результат - матрица попарной корреляции между всеми столбцами DataFrame.
Необязательный параметр method позволяет выбрать алгоритм корреляции (Присона, Спирмана, Кендалла).
Вопрос - всегда-ли самые коррелированные столбцы есть "лучшими" при машинном обучении - здесь оставим за скобками (по правилам данного формуа это другой вопрос).
Answered by passant on December 2, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP