Source code for mindfoundry.optaas.client.sklearn_pipelines.estimators.xgboost

from xgboost.sklearn import XGBClassifier as BaseXGBClassifier

from mindfoundry.optaas.client.sklearn_pipelines.mixin import OptimizableBaseEstimator
from mindfoundry.optaas.client.sklearn_pipelines.parameter_maker import SklearnParameterMaker
from mindfoundry.optaas.client.sklearn_pipelines.utils import ParametersConstraintsAndPriorMeans, SMALLEST_NUMBER_ABOVE_ZERO


[docs]class XGBClassifier(BaseXGBClassifier, OptimizableBaseEstimator):
[docs] def make_parameters_constraints_and_prior_means(self, sk: SklearnParameterMaker, **kwargs) -> ParametersConstraintsAndPriorMeans: """Generates :class:`Parameters <.Parameter>`, :class:`Constraints <.Constraint>` and :class:`PriorMeans <.PriorMeans>` to optimize a :class:`.XGBClassifier` estimator. Args: gpu_enabled (bool, optional, default=False): If True, the `objective` parameter will include gpu-specific values such as 'gpu:reg:linear'. """ objective_values = [ 'reg:linear', 'reg:logistic', 'binary:logistic', 'binary:logitraw', 'count:poisson', 'survival:cox', 'multi:softmax', 'multi:softprob', 'rank:pairwise', 'reg:gamma', 'reg:tweedie' ] if kwargs.get('gpu_enabled'): objective_values += ['gpu:reg:linear', 'gpu:reg:logistic', 'gpu:binary:logistic', 'gpu:binary:logitraw'] parameters = [ sk.CategoricalParameter('objective', values=objective_values), sk.CategoricalParameter('booster', values=["gbtree", "gblinear", "dart"]), sk.FloatParameter('learning_rate', minimum=0, maximum=1), sk.FloatParameter('gamma', minimum=0, maximum=20), sk.IntParameter('max_depth', minimum=0, maximum=20), sk.IntParameter('min_child_weight', minimum=0, maximum=10), sk.IntParameter('max_delta_step', minimum=0, maximum=10), sk.FloatParameter('subsample', minimum=SMALLEST_NUMBER_ABOVE_ZERO, maximum=1), sk.FloatParameter('colsample_bytree', minimum=SMALLEST_NUMBER_ABOVE_ZERO, maximum=1), sk.FloatParameter('colsample_bylevel', minimum=SMALLEST_NUMBER_ABOVE_ZERO, maximum=1), sk.FloatParameter('reg_lambda', minimum=0, maximum=1), sk.FloatParameter('reg_alpha', minimum=0, maximum=1), sk.FloatParameter('scale_pos_weight', minimum=0, maximum=1), sk.FloatParameter('base_score', minimum=0, maximum=1), sk.IntParameter('n_estimators', minimum=5, maximum=1000), ] return parameters, [], []