表形式のデータセットで機械学習モデルを作成する前に、通常、独立変数とターゲット変数の間に関係があるかどうかをチェックします。 これは、2つの変数間の相関を測定することによって行うことができます。 Pythonでは、Pandasは数値変数間の相関のみを見つけるための関数dataframe.corr()
を提供します。
この記事では、カテゴリ変数と連続変数の間の相関関係を見つける方法について説明します。
ケース1:独立変数が2つの値しか持たない場合
Point Biserial Correlation
カテゴリ変数が2つの値(つまりtrue/false)しか持たない場合、数値データ型(0と1)に変換できます。 数値変数になるので、dataframe.corr()
関数を使用して相関を見つけることができます。
Employee Type(EmpType)とSalaryの2つの列で構成されるdataframeを作成しましょう。
このようにして、EmpTypeとSalaryの間にいくつかの相関関係が得られます。
次のプロパティを持つdataframeを作成します:
-
平均(平均)給与
EmpType1
は60で、標準偏差は5です。 -
平均(平均)給与
EmpType2
は50で、標準偏差は5です。
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()
出力
給与 | 型 | |
給与 | 1 | 0.736262 |
TypeInt | 0.736262 | 1 |
EmpTypeとSalaryの相関は0.7です。 だから我々はそれが相関していると判断することができます。
ケース2:独立変数が2つ以上の値を持つ場合
ANOVA(分散分析)
より多くの給与をEmpType1
に、平均給与をEmpType2
に、低い給与をEmpType3
に割り当てます。 このようにして、EmpTypeとSalaryの間にいくつかの相関関係が得られます。
-
平均給与
EmpType1
は90で、標準偏差は5です。 -
平均給与
EmpType2
は70で、標準偏差は5です。 -
平均給与
EmpType3
は50で、標準偏差は5です。
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)
私たちが得る出力は次のとおりです: 1443.6261
- 3つの従業員タイプの平均給与は90、70、および50(標準偏差は5)であるため、Fスコアは1444です。
- 3つの従業員タイプの平均給与が60、55、50の場合、Fスコアは86です。
- そして、3つの従業員タイプの平均給与が51、50、49(ほぼ同じ)である場合、Fスコアは0に近くなります。 相関関係はありません。
- Fスコア値が大きいほど相関が高くなります。
このリンクから完全なコードをダウンロードして実行することができます。