特徴とターゲット変数の相関関係を確認するにはどうすればよいですか?


15

Regressionモデルを構築しようとしていますが、機能とターゲット変数の間に相関関係があるかどうかを確認する方法を探していますか?

これは私のサンプルです dataset

     Loan_ID    Gender  Married Dependents  Education Self_Employed ApplicantIncome\    

0   LP001002    Male    No         0        Graduate      No            5849    
1   LP001003    Male    Yes        1        Graduate      No            4583    
2   LP001005    Male    Yes        0        Graduate     Yes            3000    
3   LP001006    Male    Yes        0        Not Graduate  No            2583    
4   LP001008    Male    No         0        Graduate      No            6000    

CoapplicantIncome  LoanAmount   Loan_Amount_Term  Credit_History Area Loan_Status
      0.0               123          360.0            1.0        Urban     Y
      1508.0          128.0          360.0            1.0        Rural     N
      0.0              66.0          360.0            1.0        Urban     Y
      2358.0          120.0          360.0            1.0        Urban     Y
      0.0             141.0          360.0            1.0        Urban     Y

LoanAmount上記の機能に基づいて列を予測しようとしています。

機能とターゲット変数の間に相関関係があるかどうかを確認したいだけです。試してみましたがLinearRegressionGradientBoostingRegressorだいたいの精度になりません0.30 - 0.40%

より良い予測のために使用する必要があるアルゴリズム、パラメーターなどに関する提案はありますか?


Rにはこれに特別な機能はありますか?
alkanschtein

ピアソン係数を確認してください。ここで、r = 1は完全な正の相関を意味し、r = -1は完全な負の相関を意味します..
zik augustus

回答:


11

あなたのデータはパンダのDataFrameに入れることができます

import pandas as pd
data = {'Loan ID': ['LP001002', 'LP001003', 'LP001005', 'LP001006', 'LP001008'],
        'Married': ['No', 'Yes', 'Yes', 'Yes', 'No'],
        'Dependents': [0, 1, 0, 0, 0],
        'Education': ['Graduate', 'Graduate', 'Graduate', 'Not Graduate', 'Graduate'],
        'Self_Employed': ['No', 'No', 'Yes', 'No', 'No'],
        'Income': [5849, 4583, 3000, 2583, 6000],
        'Coapplicant Income': [0, 1508, 0, 2358, 0],
        'LoanAmount': [123, 128, 66, 120, 141],
        'Area': ['Urban', 'Rural', 'Urban', 'Urban', 'Urban'],
        'Loan Status': ['Y', 'N', 'Y', 'Y', 'Y']} 
df = pd.DataFrame(data)

次に、相関関係を取得するために、カテゴリカル特徴を数値特徴に変換する必要があります。もちろん、順序の選択は相関に影響しますが、幸運にも私たちのすべてのカテゴリーはバイナリーのようです。そうでない場合は、カスタム注文を考案する必要があります。

df = pd.DataFrame(data)
df['Married'] =df['Married'].astype('category').cat.codes
df['Education'] =df['Education'].astype('category').cat.codes
df['Self_Employed'] =df['Self_Employed'].astype('category').cat.codes
df['Area'] =df['Area'].astype('category').cat.codes
df['Loan Status'] =df['Loan Status'].astype('category').cat.codes

これで、「ローン金額」と他のすべての機能との相関関係を取得できます。

df[df.columns[1:]].corr()['LoanAmount'][:]

ここに画像の説明を入力してください


現在、このデータに対していくつかの機械学習を使用しても機能しない可能性があります。多数の機能とローン金額の間の関連情報を抽出するのに十分なデータがありません。

優れた結果を得るためには、機能の少なくとも10倍のインスタンスが必要です。


機能と実行できる機能のサブセット間の相関のみを取得するには

df[['Income', 'Education', 'LoanAmount']].corr()['LoanAmount'][:]

これにより、DataFrameのサブセットが取得され、上記と同じcorr()関数が適用されます。選択した列のサブセットに、相関関係の計算に使用する列が含まれていることを確認してください。この例では「LoanAmount」です。


機能の相関関係を調べるときに保持する機能を選択することは可能ですか?
user_6396 2018年

@ user2475、あなたの質問に対する回答を追加しました。
JahKnows、2018年

どういたしまして!他に質問がある場合はお知らせください。
JahKnows、2018年

@JabKnowsたった一つの疑問。機能値をスケーリングする必要がありますか?standardscalerまたはを使用する必要がありますmin_max_scalar。分類作業をしたいのですが。
user_6396 2018年

1
選択したアルゴリズムによって異なります。必要なものとそうでないものがあります。アルゴリズムを確認する必要があります。ただし、さまざまな機能のスケールを同じに保つことをお勧めします。
JahKnows、2018年

7

Pythonのメソッド

ターゲット変数に対するすべての機能の相関関係を確認する1つの方法は、コードを実行することです。

# Your data should be a pandas dataframe for this example
import pandas
yourdata = ...
corr_matrix = yourdata.corr()
print(corr_matrix["your_target_variable"].sort_values(ascending=False))

次の相関出力には、すべての変数とターゲット変数へのそれらの相関がリストされているはずです。負の相関は、ターゲット変数の値が減少するにつれて、機能変数の値が増加することを意味します。(直線的に)

代わりにプロットに相関をプロットするには、コードを実行します。

# make sure to specify some features that you might want to focus on or the plots might be too big
from pandas.tools.plotting import scatter_matrix
attributes = [list of whatever features you want to plot against the target variable]
scatter_matrix(yourdata[attributes], figsize=(12, 8))

関数のfigsize引数には、scatter_matrix最適なサイズを入力します。


2

pandas.DataFrame.corrwith()関数を使用して相関を見つけることができます。

df.drop(columns=['Loan ID']).corrwith(df['Loan Status'])

データセットの作成

import pandas as pd
data = {'Loan ID': ['LP001002', 'LP001003', 'LP001005', 'LP001006', 'LP001008'],
        'Married': ['No', 'Yes', 'Yes', 'Yes', 'No'],
        'Dependents': [0, 1, 0, 0, 0],
        'Education': ['Graduate', 'Graduate', 'Graduate', 'Not Graduate', 'Graduate'],
        'Self_Employed': ['No', 'No', 'Yes', 'No', 'No'],
        'Income': [5849, 4583, 3000, 2583, 6000],
        'Coapplicant Income': [0, 1508, 0, 2358, 0],
        'LoanAmount': [123, 128, 66, 120, 141],
        'Area': ['Urban', 'Rural', 'Urban', 'Urban', 'Urban'],
        'Loan Status': ['Y', 'N', 'Y', 'Y', 'Y']} 
df = pd.DataFrame(data)

カテゴリー変数を数値に変換する

df['Married'] =df['Married'].astype('category').cat.codes
df['Education'] =df['Education'].astype('category').cat.codes
df['Self_Employed'] =df['Self_Employed'].astype('category').cat.codes
df['Area'] =df['Area'].astype('category').cat.codes
df['Loan Status'] =df['Loan Status'].astype('category').cat.codes
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.