python, R, vimでデータマイニング

python, R, vim で疑問に思ったことなどを

loadbank:検証用データを作成するパッケージを作成しました。

loadbankパッケージを作成しました。

1. 概要

自作のパッケージを作成していると検証用のテストデータが必要になります。
都度テストデータを作成していると非効率なのでパッケージを作成しました。
私が自作しているパッケージはClassifierとRegressorを統一的に扱えることを基本方針としています。
そのため上記2種類用のデータをロード出来るように実装します。

2. 基データ

bank.csvは一般公開されている銀行のマーケティングデータです。
Classifier用のデータですが目的変数を変更することでRegressorにも対応出来るようにします。
このデータは欠損値がなく、カテゴリ型と数値型の変数が混在していてテストに適したデータです。
対象のデータは下記から取得できます。
Bank Marketing Data Set

3. データ作成方針

データはpandasのDataFrameかSeriesとして作成します。
XはDataFrame,yはSeriesとして作成します。
Regressor用の目的変数はamountとします。
カテゴリ変数(文字列)はcategory型に変換します。

4. パッケージの使用例:データ作成

Code:
# %%
from loadbank import load_bank_classifier
from loadbank import load_bank_regressor

Xclf, yclf = load_bank_classifier()
Xreg, yreg = load_bank_regressor()
# %%

5. LGBMClassifierでモデルを作成して精度を見てみる。

yはカテゴリ型なのでbinary型に変換が必要です。

Code:
# %%
import numpy as np
from lightgbm import LGBMClassifier
from sklearn.model_selection import cross_val_score

clfscore = cross_val_score(
    LGBMClassifier(),
    Xclf,
    yclf.cat.codes,
    scoring='roc_auc',
)
print(np.mean(clfscore))
# %%

roc_auc: CV=3:
= 0.9032143788207457

6. LGBMRegressorでモデルを作成して精度を見てみる。

Code:
# %%
from lightgbm import LGBMRegressor

regscore = cross_val_score(
    LGBMRegressor(),
    Xreg,
    yreg,
    scoring='neg_mean_squared_error',
)
print(np.sqrt(np.mean(regscore * -1)))
# %%

RMSE: CV=3:
= 3102.8162007396186

7. パッケージ化

パッケージ化してgithubに公開しています。
https://github.com/kanosuke/loadbank