前処理大全:第5章
今回は前処理大全の第5章をまとめたコードを記載します。
*PythonのみのコードなのでRやSQLのコードは参照できません。
第5章:分割
5-1:レコードデータにおけるモデル検証用のデータ分割
Q:交差検証
製造レコードのデータを用いて予測モデル構築のためのデータ分割。データの20%をホールドアウト検証用のテストデータにして、
残りのデータで交差数4の交差検証を行う。
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
# ホールドアウト検証用のデータ分割
# 予測モデルの入力値と予測対象の値を別々にtrain_test_split関数に設定
# test_sizeは検証データの割合
train_date, test_date, train_target, test_target = train_test_split(
production_tb.drop('fault_flg', axis=1),
production_tb[['fault_flg']],
test_size=0.2
)
# train_test_splitによって、行冥を現在の行番号に直す
train_date.reset_index(inplace=True, drop=True)
test_date.reset_index(inplace=True, drop=True)
train_target.reset_index(inplace=True, drop=True)
test_target.reset_index(inplace=True, drop=True)
# 対象の行番号リストを生成
row_no_list = list(range(len(train_target)))
# 交差検証用のデータ分割
k_fold =KFold(n_splits=4, shuffle=True)
# 交差数分繰り返し処理、並列処理も可能な部分
for train_cv_no, test_cv_no in k_fold.split(row_no_list):
# 交差検証における学習データを抽出
train_cv = train_date.iloc[train_cv_no, :]
# 交差検証における検証データを抽出
test_cv = train_date.iloc[test_cv_no, :]
# train_dateとtrain_targetを学習データ
# test_dateとtest_targetを検証データとして機械学習モデルの構築、検証
# 交差検証の結果をまとめる
# trainを学習データ、private_testを検証データとして機械学習モデルの構築、検証
5-2:時系列データにおけるモデル検証用のデータ分割
Q:時系列データにおける学習/検証データの準備
月毎のレコードデータを対象に、学習データと検証データを時間軸に対して1カ月ごとにスライドしながら生成。学習期間は24カ月、検証期間は12カ月、スライドする期間は12カ月とする。
# train_window_startに最初の学習データの開始行番号を指定
train_window_start = 1
# train_window_endに最初の学習データの終了行番号を指定
train_window_end = 24
# horizonに検証データのデータ数を指定
horizon = 12
# skipにスライドするデータ数を指定
skip = 12
# 年月に基づいてデータを並び替え
monthly_index_tb.sort_values(by='year_month')
while True :
# 検証データの終了番号を計算
test_window_end = train_window_end + horizon
# 行番号を指定して、元データから学習データを取得
# train_window_startの部分を1に固定すれば、学習データを増やしていく検証に変更可能
traub = monthly_index_tb[train_window_start : train_window_end]
# 行番号を指定して、元データから検証データを取得
test = monthly_index_tb[(train_window_end + 1) : test_window_end]
# 検証データの終了番号が元データの行数以上になってるか判定
if test_window_end >= len(monthly_index_tb.index) :
# 前データを対象にした場合終了
break
# データをスライドさせる
train_window_start += skip
train_window_end += skip
# 交差検証の結果をまとめる
まとめ
k_Foldなんかは馴染みある方も多いのではないでしょうか?かくいう私もPythonを触りたての頃から描いてる記憶があります。次は第6章をまとめますので、参考にして頂けたら嬉しいです。
サポートして頂いたお金は開業資金に充てさせて頂きます。 目標は自転車好きが集まる場所を作る事です。 お気持ち程度でいいのでサポートお願い致します!