optunaは下準備にコードを書く必要がありますが、lightgbmが対象の場合は、より簡単なコードで処理することができます。
コード
lightbgmでtrainしていたところを、optuna.integration.lightgbm
に変えるだけです。
▼lightgbmに関してはこちら
下準備
import lightgbm import optuna.integration.lightgbm as lgbo from sklearn.model_selection import train_test_split # 回帰の場合 opt_params = { "objective":"regression", "metric":"rmse" } # データを用意する X_train,X_test,y_train,y_test = train_test_split( boston_X, boston_y, test_size=0.2) reg_train = lgb.Dataset( X_train, y_train ) reg_eval = lgb.Dataset( X_test, y_test, reference=reg_train )
パラメータを探す
#パラメータを探す opt=lgbo.train( opt_params, reg_train, valid_sets = reg_eval, verbose_eval=False, #ラウンド数 num_boost_round = 5, #打ち切り #early_stopping_rounds = 100 )
パラメータを確認
#最適なパラメータを取得
opt.params
{'objective': 'regression', 'metric': 'rmse', 'lambda_l1': 0.06827725234472487, 'lambda_l2': 0.0026080375045565317, 'num_leaves': 31, 'feature_fraction': 1.0, 'bagging_fraction': 1.0, 'bagging_freq': 0, 'min_child_samples': 5}
あとはこれをモデルに渡し、再学習します。