Quelle est la meilleure solution pour calculer la corrélation entre mes fonctionnalités et la variable cible ?? Mon dataframe a 1000 lignes et 40000 colonnes ...
Exemple:
df = pd.DataFrame([[1, 2, 4 ,6], [1, 3, 4, 7], [4, 6, 8, 12], [5, 3, 2 ,10]], columns=['Feature1', 'Feature2','Feature3','Target'])
Ce code fonctionne bien mais c'est trop long sur mon dataframe ... Je n'ai besoin que de la dernière colonne de la matrice de corrélation: corrélation avec la cible (pas de corrélation de fonctionnalité par paire).
corr_matrix=df.corr()
corr_matrix["Target"].sort_values(ascending=False)
La fonction np.corcoeff () fonctionne avec le tableau mais pouvons-nous exclure la corrélation des fonctionnalités par paire?
Vous pouvez utiliser pandas corr
sur chaque colonne:
df.drop("Target", axis=1).apply(lambda x: x.corr(df.Target))
Vous pouvez utiliser scipy.stats.pearsonr sur chacune des colonnes d'entités comme ceci:
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)