При запуске xgboost для оптимизации его гиперпараметров, правильно ли, что я использую свой dev (валидация), заданный в списке наблюдения, и чтобы делать прогнозы для проверки его производительности? У меня также был вопрос о том, как следовать этому же процессу при использовании hyperopt для поиска гиперпараметров.
Мне интересно, правильно ли это, потому что впечатлено, что мы никогда не используем набор тестов для чего-то другого, кроме как сделать окончательный прогноз в конце. Спасибо за ваше время.
# prepare xgboost data
xg_train = xgb.DMatrix(X_train, label=y_train)
xg_test = xgb.DMatrix(X_test, label=y_test)
xg_dev = xgb.DMatrix(X_dev, label=y_dev)
# validations set to watch performance
watchlist = [(xg_train,'train'), (xg_dev,'eval')]
# validation results
evals_results = {}
# boost
bst = xgb.train(params=param,
dtrain=xg_train,
num_boost_round=5000,
evals=watchlist,
evals_result=evals_results,
early_stopping_rounds=100)
# generate scores
predicted_y = bst.predict(xg_dev, ntree_limit=bst.best_iteration)
current_score = f1_score(y_dev, np.round(predicted_y), average='weighted')