1

Ich habe einige kategorische Merkmale in meinen Daten zusammen mit kontinuierlichen. Ist es eine gute oder absolut schlechte Idee, Kategoriestrukturen zu codieren, um eine Korrelation zu Labels mit anderen fortlaufenden Kreaturen zu finden?Kategoriale Merkmale Korrelation

+0

Binär oder n-stufig kategorisch? Bestellte oder ungeordnete? – smci

+0

* "Korrelation von es zu Etiketten" * => Korrelation von es zu einer kategorischen Antwortvariablen (wie viele Werte?) – smci

Antwort

1

Es gibt eine Möglichkeit, den Korrelationskoeffizienten ohne One-Hot-Codierung der Kategorievariablen zu berechnen. Cramers V-Statistik ist eine Methode zur Berechnung der Korrelation kategorialer Variablen. Es kann wie folgt berechnet werden. Der folgende Link ist hilfreich. Using pandas, calculate Cramér's coefficient matrix Für Variablen mit anderen kontinuierlichen Werten können Sie kategorisieren, indem Sie pandas verwenden.

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

Danke für die Antwort, aber meine Frage war nicht, wie die Korrelation zwischen kategorischen Merkmalen zu berechnen. Frage ist: Ist es eine gute Idee oder schrecklich schlechte Idee, heiße Encoder für kategorische Merkmale zu verwenden und dann die Funktionen einschließlich kategorischer und kontinuierlicher zu verwenden, um Korrelation zu berechnen. – user8653080

+0

Es tut mir leid, dass ich die Frage falsch verstanden habe. Ich denke, es gibt kein Problem, die Korrelation zwischen einem Hot-Encoding-Feature und einem anderen kontinuierlichen Feature zu berechnen, aber ich denke, dass der Korrelationskoeffizient nur ein Wert für ein Element der Kategorie sein wird. – Keiku

+0

Vielen Dank – user8653080