Avant de créer un modèle d’apprentissage automatique sur un ensemble de données tabulaires, nous vérifions normalement s’il existe une relation entre les variables indépendantes et cibles. Cela peut être fait en mesurant la corrélation entre deux variables. En Python, Pandas fournit une fonction, dataframe.corr()
, pour trouver la corrélation entre les variables numériques uniquement.
Dans cet article, nous verrons comment trouver la corrélation entre les variables catégorielles et continues.
Cas 1: Lorsqu’une Variable Indépendante N’a Que Deux Valeurs
Corrélation Bisérielle ponctuelle
Si une variable catégorielle n’a que deux valeurs (c’est-à-dire true / false), nous pouvons la convertir en un type de données numérique (0 et 1). Comme il devient une variable numérique, nous pouvons trouver la corrélation en utilisant la fonction dataframe.corr()
.
Créons une trame de données qui sera composée de deux colonnes: Type d’employé (EmpType) et Salaire.
À dessein, nous attribuerons plus de salaire à EmpType1. De cette façon, nous obtiendrons une corrélation entre EmpType et salaire.
Créez une trame de données avec les propriétés suivantes:
-
Le salaire moyen (moyen) de
EmpType1
est de 60 avec un écart type de cinq. -
Le salaire moyen (moyen) de
EmpType2
est de 50 avec un écart type de cinq.
import pandas as pdimport numpy as npnum1=np.random.normal(loc=60,scale=5,size=100)df1=pd.DataFrame(num1,columns=)df1='EmpType1'num2=np.random.normal(loc=50,scale=5,size=100)df2=pd.DataFrame(num2,columns=)df2='EmpType2'df=pd.concat(,axis=0)# Since Categorical variable 'Type' has only 2 values we will convert it into numeric (0 and 1) datatype.df=(df=='EmpType1').astype(int)df.corr()
Sortie
Salaire | TypeInt | |
Salaire | 1 | 0.736262 |
Typage | 0.736262 | 1 |
La corrélation entre EmpType et Salaire est de 0,7. Nous pouvons donc déterminer qu’il est corrélé.
Cas 2: Lorsque Des Variables Indépendantes Ont Plus de Deux Valeurs
ANOVA (Analyse de la variance)
Nous attribuerons plus de salaire à EmpType1
, un salaire moyen à EmpType2
et un salaire faible à EmpType3
. De cette façon, nous obtiendrons une corrélation entre EmpType et salaire.
-
Le salaire moyen de
EmpType1
est de 90 avec un écart type de cinq. -
Le salaire moyen de
EmpType2
est de 70 avec un écart type de cinq. -
Le salaire moyen de
EmpType3
est de 50 avec un écart type de cinq.
num1=np.random.normal(loc=90,scale=5,size=100)df1=pd.DataFrame(num1,columns=)df1='EmpType1'num2=np.random.normal(loc=70,scale=5,size=100)df2=pd.DataFrame(num2,columns=)df2='EmpType2'num3=np.random.normal(loc=50,scale=5,size=100)df3=pd.DataFrame(num3,columns=)df3='EmpType3'df=pd.concat(,axis=0)from scipy import statsF, p = stats.f_oneway(df.Salary, df.Salary, df.Salary)print(F)
La sortie que nous obtenons est: 1443.6261
- Étant donné que le salaire moyen de trois types d’employés est de 90, 70 et 50 (avec un écart-type de cinq), le score F est de 1444.
- Si le salaire moyen de trois types d’employés est de 60, 55, 50, le score F est de 86.
- Et si le salaire moyen de trois types d’employés est de 51, 50, 49 (presque le même), le score F sera proche de 0, c’est-à-dire il n’y a pas de corrélation.
- Plus la valeur du score F est élevée, plus la corrélation sera élevée.
Vous pouvez télécharger et exécuter le code complet à partir de ce lien.