1

J'ai des caractéristiques catégorielles dans mes données avec celles continues. Est-ce une bonne ou une mauvaise idée d'encoder à chaud les caractéristiques d'une catégorie pour trouver une corrélation avec des étiquettes avec d'autres créatures continues?Corrélation de caractéristiques catégorielles

+0

Binaire ou n-aire catégorique? Commandé ou non commandé? – smci

+0

* "corrélation de celui-ci aux étiquettes" * => corrélation de celui-ci à une variable de réponse catégorique (combien de valeurs?) – smci

Répondre

1

Il existe un moyen de calculer le coefficient de corrélation sans codage à chaud de la variable de catégorie. La statistique Cramers V est une méthode pour calculer la corrélation des variables catégoriques. Il peut être calculé comme suit. Le lien suivant est utile. Using pandas, calculate Cramér's coefficient matrix Pour les variables avec d'autres valeurs continues, vous pouvez classer en utilisant cut de pandas.

import pandas as pd 
import numpy as np 
import scipy.stats as ss 
import seaborn as sns 

tips = sns.load_dataset("tips") 

tips["total_bill_cut"] = pd.cut(tips["total_bill"], 
           np.arange(0, 55, 5), 
           include_lowest=True, 
           right=False) 

def cramers_v(confusion_matrix): 
    """ calculate Cramers V statistic for categorial-categorial association. 
     uses correction from Bergsma and Wicher, 
     Journal of the Korean Statistical Society 42 (2013): 323-328 
    """ 
    chi2 = ss.chi2_contingency(confusion_matrix)[0] 
    n = confusion_matrix.sum() 
    phi2 = chi2/n 
    r, k = confusion_matrix.shape 
    phi2corr = max(0, phi2 - ((k-1)*(r-1))/(n-1)) 
    rcorr = r - ((r-1)**2)/(n-1) 
    kcorr = k - ((k-1)**2)/(n-1) 
    return np.sqrt(phi2corr/min((kcorr-1), (rcorr-1))) 

confusion_matrix = pd.crosstab(tips["day"], tips["time"]).as_matrix() 
cramers_v(confusion_matrix) 
# Out[10]: 0.93866193407222209 

confusion_matrix = pd.crosstab(tips["total_bill_cut"], tips["time"]).as_matrix() 
cramers_v(confusion_matrix) 
# Out[24]: 0.16498707494988371 
+0

Merci pour la réponse, mais ma question n'était pas de savoir comment calculer la corrélation entre les caractéristiques catégorielles. La question est: est-ce une bonne idée ou une très mauvaise idée d'utiliser des encodeurs à chaud pour les caractéristiques catégorielles, puis d'utiliser les fonctionnalités, y compris celles qui sont catégoriques et continues, pour calculer la corrélation. – user8653080

+0

Je suis désolé d'avoir mal compris la question. Je pense qu'il n'y a pas de problème pour calculer la corrélation entre une caractéristique de codage à chaud et une autre caractéristique continue, mais je pense que le coefficient de corrélation sera une valeur uniquement pour un élément de la catégorie. – Keiku

+0

Merci beaucoup – user8653080