web-dev-qa-db-ja.com

特徴とターゲット変数間の相関を計算する

機能とターゲット変数間の相関を計算するための最良のソリューションは何ですか?私のデータフレームには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()関数は配列で動作しますが、ペアワイズフィーチャ相関を除外できますか?

4
Cox Tox

各列でpandas corrを使用できます:

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

次のように、各機能列で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
William Gurecky