计算特征和目标变量之间的相关性

Compute correlation between features and target variable

计算我的特征和目标变量之间相关性的最佳解决方案是什么??我的数据框有 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() 函数适用于数组,但我们可以排除成对特征相关性吗?

您可以像这样在每个特征列上使用 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)

您可以在每一列上使用 pandas corr

df.drop("Target", axis=1).apply(lambda x: x.corr(df.Target))
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']

这适用于我的情况。让我知道是否有相同的 corrections/updates。

要获得任何决定性结果,您的实例应该至少是特征数量的 10 倍。

自 2019 年 1 月发布 Pandas 0.24 以来,您可以简单地使用 DataFrame.corrwith():

df.corrwith(df["Target"])