计算我的特征和目标变量之间的相关性的最佳解决方案是什么?我的数据框有1000行和4万列...
示例:
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()函数可用于数组,但我们可以排除成对特征相关性吗?
答案 0 :(得分:5)
您可以在每一列上使用熊猫corr
:
df.drop("Target", axis=1).apply(lambda x: x.corr(df.Target))
答案 1 :(得分:1)
您可以在每个功能列上使用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)
答案 2 :(得分:1)
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倍。
答案 3 :(得分:1)
自从Pandas 0.24在2019年1月发布以来,您只需使用DataFrame.corrwith()
:
df.corrwith(df["Target"])