Например, следует ли мне использовать
Код: Выделить всё
preds = model.predict(xgtest, ntree_limit=bst.best_iteration)
Код: Выделить всё
preds = model.predict(xgtest, ntree_limit=bst.best_ntree_limit)
Вот исходная цитата из документа xgboost, но в ней не указана причина, и я также не нашел сравнения между этими параметрами:
Ранняя остановка
Если у вас есть набор проверки, вы можете использовать раннюю остановку, чтобы найти
оптимальное количество раундов повышения. Для ранней остановки требуется как минимум
один набор значений eval. Если их несколько, будет использоваться последний.
train(..., evals=evals, Early_stopping_rounds=10)
Модель будет тренироваться до тех пор, пока показатель проверки не перестанет улучшаться.
Чтобы продолжить обучение, ошибка проверки должна уменьшаться по крайней мере каждые
early_stopping_rounds.
Если произойдет ранняя остановка, у модели будет три дополнительных поля:
bst.best_score, bst.best_iteration и bst.best_ntree_limit. Обратите внимание, что
train() вернет модель последней итерации, а не самую лучшую.
Pr
ediction
Обученная или загруженная модель может выполнять прогнозы на
наборах данных.
Код: Выделить всё
# 7 entities, each contains 10 features
data = np.random.rand(7, 10)
dtest = xgb.DMatrix(data)
ypred = bst.predict(dtest)
, вы можете получить прогнозы для лучшей
итерации с помощью bst.best_ntree_limit:
Код: Выделить всё
ypred = bst.predict(dtest,ntree_limit=bst.best_ntree_limit)Подробнее здесь: https://stackoverflow.com/questions/435 ... t-best-ntr
Мобильная версия