Как в DataFrame с колонками A, B, C, D (например) отсортировать колонки B, C, D от больше всего коррелирующих с A до менее всего корреллирующих?
Спрашиваю затем, чтобы научиться автоматизировать поиск самых подходящих для машинного обучения признаков X для поиска y. Следовательно, если, допустим, есть 100 признаков для X, а мне нужно взять 5-ть, которые более всего коррелируют с y, то не охота это делать руками (глазами), так как можно ошибиться. Проще же переложить это на программу...
Ответы (3 шт):
Pandas, метод df.corr()
Результат - матрица попарной корреляции между всеми столбцами DataFrame.
Необязательный параметр method позволяет выбрать алгоритм корреляции (Присона, Спирмана, Кендалла).
Вопрос - всегда-ли самые коррелированные столбцы есть "лучшими" при машинном обучении - здесь оставим за скобками (по правилам данного формуа это другой вопрос).
Полностью если, то как-то так:
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...' колонки переписать, но думаю принцип понятен.
Судя по вопросу, вы хотите выбрать наиболее важные/сильные признаки из набора X, которые позволят предсказать значения в столбце y. Корреляцию обычно расчитывают для противоположных целей - сильно коррелирующие признаки чаще всего ухудшают качество модели, поэтому от них стараются избавиться. В вашем случае вам надо выбрать наиболее важные признаки, т.е. те котороые максимально влияют на качество работы модели. Для этого существует несколько подходов:
Feature Importance- ранжирование признаков по степени влияния на качество работы модели. Чаще всего для этого используют алгоритмы "решающих деревьев" или их ансамбли.Feature Selection- выбор наиболее важных признаков.Dimensionality Reduction- уменьшения размерности пространства признаков. Грубо говоря, мы проецируем вектора признаков в пространство с меньшей размерностью так, чтобы потерять минимум полезной информации. Это как создавать порошковый сок из фруктов - мы пытаемся оставить все самое ценное (экстракт) и избавиться от лишнего.
PS корреляция не всегда способна уловить сложные зависимости и шаблоны. Например один из самых популярных алгоритмов расчёта коэффициента корреляции по Пирсону - способен найти только линейные зависимости между парой столбцов / признаков.