1

私は連続したものと一緒に私のデータにいくつかのカテゴリー的な特徴があります。カテゴリフィーチャを他の連続した生き物とともにラベルとの相関関係を見つけるためにホットエンコードすることは、良いか絶対的に悪い考えですか?カテゴリの特徴相関

+0

バイナリまたはn-aryカテゴリ?順序付けられているか、順序付けられていないか? – smci

+0

*「ラベルとの相関」* =>カテゴリレスポンス変数との相関性(何桁の値ですか?) – smci

答えて

1

カテゴリ変数をワンホットエンコードすることなく相関係数を計算する方法があります。 Cramers V統計は、カテゴリ変数の相関を計算するための1つの方法です。それは以下のように計算することができる。以下のリンクが参考になります。 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

質問を誤解して申し訳ありません。 1つのホットエンコーディング機能と別の連続機能との間の相関を計算することは問題ではないと考えていますが、相関係数はそのカテゴリの1つの項目についての値にすぎないと思います。 – Keiku

+0

ありがとうございました – user8653080