Вычислить корреляцию между функциями и целевой переменной

Каково лучшее решение для вычисления корреляции между моими функциями и целевой переменной?? Мой фрейм данных имеет 1000 строк и 40 000 столбцов...

Пример:

df = pd.DataFrame([[1, 2, 4 ,6], [1, 3, 4, 7], [4, 6, 8, 12], [5, 3, 2 ,10]], columns=['Feature1', 'Feature2','Feature3','Target'])

Этот код работает нормально, но это слишком долго на моем фрейме данных... Мне нужен только последний столбец матрицы корреляции: корреляция с целью (не парная функция корреляции).

corr_matrix=df.corr()
corr_matrix["Target"].sort_values(ascending=False)

Функция np.corcoeff() работает с массивом, но можем ли мы исключить попарную корреляцию признаков?

2 ответа

Решение

Вы могли бы использовать панд corr в каждом столбце:

df.drop("Target", axis=1).apply(lambda x: x.corr(df.Target))

Поскольку Pandas 0.24 выпущен в январе 2019 года, вы можете просто использовать DataFrame.corrwith():

df.corrwith(df["Target"])

Вы можете использовать scipy.stats.pearsonr для каждого из столбцов объектов следующим образом:

import pandas as pd
import numpy as np
from scipy.stats import pearsonr

# example data
df = pd.DataFrame([[1, 2, 4 ,6], [1, 3, 4, 7], [4, 6, 8, 12], [5, 3, 2 ,10]],
                  columns=['Feature1', 'Feature2','Feature3','Target'])

# Only compute pearson prod-moment correlations between feature
# columns and target column
target_col_name = 'Target'
feature_target_corr = {}
for col in df:
    if target_col_name != col:
        feature_target_corr[col + '_' + target_col_name] = \
            pearsonr(df[col], df[target_col_name])[0]
print("Feature-Target Correlations")
print(feature_target_corr)
df = pd.DataFrame([[1, 2, 4 ,6], [1, 3, 4, 7], [4, 6, 8, 12], [5, 3, 2 ,10]], columns=['Feature1', 'Feature2','Feature3','Target'])

Для корреляции между целевой переменной и всеми другими функциями:

df.corr()['Target']

В моем случае это работает. Сообщите мне, есть ли какие-либо исправления / обновления.

Чтобы получить убедительные результаты, ваш экземпляр должен как минимум в 10 раз превышать количество функций.

Другие вопросы по тегам