• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

kfoldとその種類

date: 2021-01-08 excerpt: kfoldとその種類について

tag: pythonkfoldml機械学習


kfoldとその種類について

kfold

  • 通常のランダムのスプリット

StratifiedKFold

  • 非対称データセットに対して同じ比率でfoldを切るとき
  • カテゴリ変数を目的にするだけでなく、回帰でもbinを切れば使える
from sklearn.model_selection import StratifiedKFold
skf = StratifiedKFold(n_splits=5,shuffle=True,random_state=777)

bin_ys = ys // 0.5

for idx, (trn_idx, val_idx) in enumerate(skf.split(xs, bin_ys)):
	print(f'now fold={idx:02d} split size is', skf.get_n_splits())
	trn_data = lgb.Dataset(xs.iloc[trn_idx], label=ys.values[trn_idx], categorical_feature=cats_index)
	val_data = lgb.Dataset(xs.iloc[val_idx], label=ys.values[val_idx], categorical_feature=cats_index)
	num_round = n_estimators
	clf = lgb.train(param, trn_data, num_round, valid_sets=[
		trn_data, val_data], verbose_eval=verbose, early_stopping_rounds=early_stopping_rounds)
	oof_predictions[val_idx] = clf.predict(xs.iloc[val_idx])
	test_predictions += clf.predict(XT) / skf.get_n_splits()
	....

GroupKFold

  • 時系列など
  • 並び順を保持して、ブロックでKFoldを分割する


pythonkfoldml機械学習 Share Tweet