XGBoostで学習した結果、以下のようなグラフが得られました。
rounds=500で実験を行ったとき、rounds=188でlossが最小になっていることが分かりました。
この場合を用いて推測を行いたいのですが、どのように指定すればいいのでしょうか。
何が回答に必要なのかわからないので、この表を出すまでのコードを一応掲載しておきます。
Python
1from sklearn.model_selection import train_test_split 2import xgboost as xgb 3 4X_train, Y_train, X_target, Y_target = train_test_split(train, target, random_state=0) 5 6dtrain = xgb.DMatrix(X_train, label=X_target) 7dvalid = xgb.DMatrix(Y_train, label=Y_target) 8num_round = 500 9evallist = [(dvalid, "eval"), (dtrain, "train")] 10evals_result = {} 11param = { 12 "max_depth": 3, 13 "eta": 0.01, 14 "objective": "reg:squarederror", 15} 16bst = xgb.train( 17 param, dtrain, 18 num_round, 19 evallist, 20 evals_result=evals_result, 21 # 一定ラウンド回しても改善が見込めない場合は学習を打ち切る 22 early_stopping_rounds=1000 23) 24 25plt.figure(figsize=(10, 5)) 26train_metric = evals_result['train']['rmse'] 27plt.plot(train_metric, label='train rmse') 28eval_metric = evals_result['eval']['rmse'] 29plt.plot(eval_metric, label='eval rmse') 30plt.grid() 31plt.legend() 32plt.xlabel('rounds') 33plt.ylabel('rmse') 34plt.ylim(5, 40) 35plt.show()
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。