1

데이터에 연속적인 특성과 함께 몇 가지 범주 적 기능이 있습니다. 카테고리 피처를 다른 피조물과 함께 라벨에 상관 관계를 찾기 위해 핫 코드 인코딩하는 것이 좋거나 절대적으로 나쁜 생각입니까?범주 형 상관 관계

+0

이진 또는 n-ary 범주? 순서가 정해지지 않았거나 정렬되지 않았습니까? – smci

+0

* "레이블과의 상관 관계"* => 범주 형 응답 변수와의 상관 관계 (얼마나 많은 값입니까?) – smci

답변

1

카테고리 변수를 한 번 핫 인코딩하지 않고 상관 계수를 계산하는 방법이 있습니다. Cramers V 통계는 범주 형 변수의 상관 관계를 계산하는 한 가지 방법입니다. 다음과 같이 계산할 수 있습니다. 다음 링크가 도움이됩니다. Using pandas, calculate Cramér's coefficient matrix 다른 연속 값이있는 변수의 경우 cutpandas으로 분류 할 수 있습니다.

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

답장을 보내 주셔서 감사합니다. 그러나 제 질문은 범주 형 기능 간의 상관 관계를 계산하는 방법이 아니 었습니다. 질문입니다 : 범주 형 기능에 대해 핫 인코더를 사용한 다음 범주 형 및 연속 형 기능을 사용하여 상관 관계를 계산하는 것이 좋거나 끔찍한 나쁜 아이디어입니까? – user8653080

+0

질문에 대한 오해로 인해 유감입니다. 하나의 핫 인코딩 기능과 다른 연속 기능 간의 상관 관계를 계산하는 데 문제가 없다고 생각하지만 상관 계수는 해당 카테고리의 한 항목에 대해서만 가치가 있다고 생각합니다. – Keiku

+0

고맙습니다. – user8653080