Define best_iteration only if early stopping is used. (#9403)
* Define `best_iteration` only if early stopping is used. This is the behavior specified by the document but not honored in the actual code. - Don't set the attributes if there's no early stopping. - Clean up the code for callbacks, and replace assertions with proper exceptions. - Assign the attributes when early stopping `save_best` is used. - Turn the attributes into Python properties. --------- Co-authored-by: Philip Hyunsu Cho <chohyu01@cs.washington.edu>
This commit is contained in:
@@ -37,3 +37,7 @@ The sliced model is a copy of selected trees, that means the model itself is imm
|
||||
during slicing. This feature is the basis of `save_best` option in early stopping
|
||||
callback. See :ref:`sphx_glr_python_examples_individual_trees.py` for a worked example on
|
||||
how to combine prediction with sliced trees.
|
||||
|
||||
.. note::
|
||||
|
||||
The returned model slice doesn't contain attributes like :py:class:`~xgboost.Booster.best_iteration` and :py:class:`~xgboost.Booster.best_score`.
|
||||
|
||||
Reference in New Issue
Block a user