クレジットスコアリング scikit-learn

クレジットスコアリング

クレジットスコアリングの一例として、ロジスティック回帰を用いた二項分類問題を考えてみましょう。

この例では、顧客がローンを返済する(1)かしない(0)かを予測します。

特徴量としては、年齢と収入を考えてみます。

まず、必要なライブラリをインポートし、仮想のデータセットを作成します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
import seaborn as sns

# 仮想データセットの作成
np.random.seed(0)
age = np.random.randint(20, 70, 1000)
income = np.random.randint(20000, 100000, 1000)
will_pay_back = np.random.randint(0, 2, 1000)

df = pd.DataFrame({
'age': age,
'income': income,
'will_pay_back': will_pay_back
})

次に、データを訓練セットとテストセットに分割し、ロジスティック回帰モデルを訓練します。

1
2
3
4
5
6
7
8
9
10
# 特徴量とターゲットに分割
X = df[['age', 'income']]
y = df['will_pay_back']

# 訓練セットとテストセットに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# ロジスティック回帰モデルの訓練
model = LogisticRegression()
model.fit(X_train, y_train)

最後に、訓練したモデルを用いてテストセットのデータを予測し、結果をグラフ化します。

1
2
3
4
5
6
7
# テストセットのデータを予測
y_pred = model.predict(X_test)

# 結果のグラフ化
cm = pd.crosstab(y_test, y_pred, rownames=['Actual'], colnames=['Predicted'])
sns.heatmap(cm, annot=True, fmt='d')
plt.show()

このヒートマップは混同行列を表しており、モデルがどの程度正確に予測できているかを視覚的に理解するのに役立ちます。

[実行結果]

ソースコード解説

コードの詳細な説明は下記の通りです。

1. import ステートメント:

必要なライブラリやモジュールをインポートします。
numpypandassklearnmatplotlib.pyplotseabornが使用されています。

2. 仮想データセットの作成:

numpy.randomを使って、age(年齢)、income(収入)、will_pay_back(返済するかどうか)の3つの特徴量を持つ仮想的なデータセットを作成します。
これらの特徴量はランダムな値で生成されます。

3. データフレームの作成:

pandas.DataFrameを使って、上記で生成した特徴量を含むデータフレーム df を作成します。

4. 特徴量とターゲットの分割:

df から特徴量 X(’age’と’income’)とターゲット変数 y(’will_pay_back’)を分割します。

5. 訓練セットとテストセットの分割:

sklearn.model_selection.train_test_split を使って、データを訓練セットとテストセットに分割します。
ここでは、テストセットのサイズを設定し、乱数のシードを固定して再現性を確保しています。

6. ロジスティック回帰モデルの訓練:

sklearn.linear_model.LogisticRegression を使って、ロジスティック回帰モデルを作成し、訓練セットを用いてモデルを訓練します。

7. テストセットのデータを予測:

訓練されたモデルを使って、テストセットの特徴量 X_test を予測します。

8. 結果のグラフ化:

予測結果と実際のターゲット変数 y_test をもとに、混同行列(confusion matrix)を作成し、seaborn.heatmap を使って可視化します。
混同行列は、予測されたクラスと実際のクラスの組み合わせごとにカウントされます。

9. plt.show():

グラフを表示します。


このコードを実行すると、ロジスティック回帰モデルを使って返済するかどうかを予測し、混同行列をグラフ化することができます。

混同行列は、予測の正確性や誤分類の種類を評価するのに役立ちます。