From 7a039e03fe566d689b04655adc6981518f8988da Mon Sep 17 00:00:00 2001 From: Tim Sabsch Date: Mon, 30 May 2022 06:08:24 +0200 Subject: [PATCH] Fix incomplete type hints for `verbose` (#7945) --- python-package/xgboost/dask.py | 16 ++++++++-------- python-package/xgboost/sklearn.py | 24 +++++++++++++++--------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/python-package/xgboost/dask.py b/python-package/xgboost/dask.py index ee8ea1a5aec4..4363feac7616 100644 --- a/python-package/xgboost/dask.py +++ b/python-package/xgboost/dask.py @@ -1731,7 +1731,7 @@ async def _fit_async( sample_weight_eval_set: Optional[Sequence[_DaskCollection]], base_margin_eval_set: Optional[Sequence[_DaskCollection]], early_stopping_rounds: Optional[int], - verbose: bool, + verbose: Union[int, bool], xgb_model: Optional[Union[Booster, XGBModel]], feature_weights: Optional[_DaskCollection], callbacks: Optional[Sequence[TrainingCallback]], @@ -1797,7 +1797,7 @@ def fit( eval_set: Optional[Sequence[Tuple[_DaskCollection, _DaskCollection]]] = None, eval_metric: Optional[Union[str, Sequence[str], Callable]] = None, early_stopping_rounds: Optional[int] = None, - verbose: bool = True, + verbose: Union[int, bool] = True, xgb_model: Optional[Union[Booster, XGBModel]] = None, sample_weight_eval_set: Optional[Sequence[_DaskCollection]] = None, base_margin_eval_set: Optional[Sequence[_DaskCollection]] = None, @@ -1826,7 +1826,7 @@ async def _fit_async( sample_weight_eval_set: Optional[Sequence[_DaskCollection]], base_margin_eval_set: Optional[Sequence[_DaskCollection]], early_stopping_rounds: Optional[int], - verbose: bool, + verbose: Union[int, bool], xgb_model: Optional[Union[Booster, XGBModel]], feature_weights: Optional[_DaskCollection], callbacks: Optional[Sequence[TrainingCallback]], @@ -1906,7 +1906,7 @@ def fit( eval_set: Optional[Sequence[Tuple[_DaskCollection, _DaskCollection]]] = None, eval_metric: Optional[Union[str, Sequence[str], Callable]] = None, early_stopping_rounds: Optional[int] = None, - verbose: bool = True, + verbose: Union[int, bool] = True, xgb_model: Optional[Union[Booster, XGBModel]] = None, sample_weight_eval_set: Optional[Sequence[_DaskCollection]] = None, base_margin_eval_set: Optional[Sequence[_DaskCollection]] = None, @@ -2027,7 +2027,7 @@ async def _fit_async( eval_qid: Optional[Sequence[_DaskCollection]], eval_metric: Optional[Union[str, Sequence[str], Metric]], early_stopping_rounds: Optional[int], - verbose: bool, + verbose: Union[int, bool], xgb_model: Optional[Union[XGBModel, Booster]], feature_weights: Optional[_DaskCollection], callbacks: Optional[Sequence[TrainingCallback]], @@ -2102,7 +2102,7 @@ def fit( eval_qid: Optional[Sequence[_DaskCollection]] = None, eval_metric: Optional[Union[str, Sequence[str], Callable]] = None, early_stopping_rounds: int = None, - verbose: bool = False, + verbose: Union[int, bool] = False, xgb_model: Optional[Union[XGBModel, Booster]] = None, sample_weight_eval_set: Optional[Sequence[_DaskCollection]] = None, base_margin_eval_set: Optional[Sequence[_DaskCollection]] = None, @@ -2167,7 +2167,7 @@ def fit( eval_set: Optional[Sequence[Tuple[_DaskCollection, _DaskCollection]]] = None, eval_metric: Optional[Union[str, Sequence[str], Callable]] = None, early_stopping_rounds: Optional[int] = None, - verbose: bool = True, + verbose: Union[int, bool] = True, xgb_model: Optional[Union[Booster, XGBModel]] = None, sample_weight_eval_set: Optional[Sequence[_DaskCollection]] = None, base_margin_eval_set: Optional[Sequence[_DaskCollection]] = None, @@ -2231,7 +2231,7 @@ def fit( eval_set: Optional[Sequence[Tuple[_DaskCollection, _DaskCollection]]] = None, eval_metric: Optional[Union[str, Sequence[str], Callable]] = None, early_stopping_rounds: Optional[int] = None, - verbose: bool = True, + verbose: Union[int, bool] = True, xgb_model: Optional[Union[Booster, XGBModel]] = None, sample_weight_eval_set: Optional[Sequence[_DaskCollection]] = None, base_margin_eval_set: Optional[Sequence[_DaskCollection]] = None, diff --git a/python-package/xgboost/sklearn.py b/python-package/xgboost/sklearn.py index f6b43d8de448..9e677a000a78 100644 --- a/python-package/xgboost/sklearn.py +++ b/python-package/xgboost/sklearn.py @@ -900,7 +900,7 @@ def fit( eval_set: Optional[Sequence[Tuple[ArrayLike, ArrayLike]]] = None, eval_metric: Optional[Union[str, Sequence[str], Metric]] = None, early_stopping_rounds: Optional[int] = None, - verbose: Optional[bool] = True, + verbose: Optional[Union[bool, int]] = True, xgb_model: Optional[Union[Booster, str, "XGBModel"]] = None, sample_weight_eval_set: Optional[Sequence[ArrayLike]] = None, base_margin_eval_set: Optional[Sequence[ArrayLike]] = None, @@ -938,8 +938,11 @@ def fit( Use `early_stopping_rounds` in :py:meth:`__init__` or :py:meth:`set_params` instead. verbose : - If `verbose` and an evaluation set is used, writes the evaluation metric - measured on the validation set to stderr. + If `verbose` is True and an evaluation set is used, the evaluation metric + measured on the validation set is printed to stdout at each boosting stage. + If `verbose` is an integer, the evaluation metric is printed at each `verbose` + boosting stage. The last boosting stage / the boosting stage found by using + `early_stopping_rounds` is also printed. xgb_model : file name of stored XGBoost model or 'Booster' instance XGBoost model to be loaded before training (allows training continuation). @@ -1362,7 +1365,7 @@ def fit( eval_set: Optional[Sequence[Tuple[ArrayLike, ArrayLike]]] = None, eval_metric: Optional[Union[str, Sequence[str], Metric]] = None, early_stopping_rounds: Optional[int] = None, - verbose: Optional[bool] = True, + verbose: Optional[Union[bool, int]] = True, xgb_model: Optional[Union[Booster, str, XGBModel]] = None, sample_weight_eval_set: Optional[Sequence[ArrayLike]] = None, base_margin_eval_set: Optional[Sequence[ArrayLike]] = None, @@ -1604,7 +1607,7 @@ def fit( eval_set: Optional[Sequence[Tuple[ArrayLike, ArrayLike]]] = None, eval_metric: Optional[Union[str, Sequence[str], Metric]] = None, early_stopping_rounds: Optional[int] = None, - verbose: Optional[bool] = True, + verbose: Optional[Union[bool, int]] = True, xgb_model: Optional[Union[Booster, str, XGBModel]] = None, sample_weight_eval_set: Optional[Sequence[ArrayLike]] = None, base_margin_eval_set: Optional[Sequence[ArrayLike]] = None, @@ -1676,7 +1679,7 @@ def fit( eval_set: Optional[Sequence[Tuple[ArrayLike, ArrayLike]]] = None, eval_metric: Optional[Union[str, Sequence[str], Metric]] = None, early_stopping_rounds: Optional[int] = None, - verbose: Optional[bool] = True, + verbose: Optional[Union[bool, int]] = True, xgb_model: Optional[Union[Booster, str, XGBModel]] = None, sample_weight_eval_set: Optional[Sequence[ArrayLike]] = None, base_margin_eval_set: Optional[Sequence[ArrayLike]] = None, @@ -1755,7 +1758,7 @@ def fit( eval_qid: Optional[Sequence[ArrayLike]] = None, eval_metric: Optional[Union[str, Sequence[str], Metric]] = None, early_stopping_rounds: Optional[int] = None, - verbose: Optional[bool] = False, + verbose: Optional[Union[bool, int]] = False, xgb_model: Optional[Union[Booster, str, XGBModel]] = None, sample_weight_eval_set: Optional[Sequence[ArrayLike]] = None, base_margin_eval_set: Optional[Sequence[ArrayLike]] = None, @@ -1814,8 +1817,11 @@ def fit( :py:meth:`set_params` instead. verbose : - If `verbose` and an evaluation set is used, writes the evaluation metric - measured on the validation set to stderr. + If `verbose` is True and an evaluation set is used, the evaluation metric + measured on the validation set is printed to stdout at each boosting stage. + If `verbose` is an integer, the evaluation metric is printed at each `verbose` + boosting stage. The last boosting stage / the boosting stage found by using + `early_stopping_rounds` is also printed. xgb_model : file name of stored XGBoost model or 'Booster' instance XGBoost model to be loaded before training (allows training continuation).