'XGBClassifer, when de-serialized, gives 'XGBModel' object has no attribute 'enable_categorical'

I have a serialized XGBClassifier object, trained and generated using xgboost=1.5.2.

XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.5,
              colsample_bynode=1, colsample_bytree=0.30140958911801474,
              eval_metric='logloss', gamma=0.1203484640861413, gpu_id=-1,
              importance_type='gain', interaction_constraints='',
              learning_rate=0.1, max_bin=368, max_delta_step=0, max_depth=6,
              min_child_weight=1, missing=nan, monotone_constraints='()',
              n_estimators=100, n_jobs=6, num_parallel_tree=1, random_state=42,
              reg_alpha=0, reg_lambda=1, scale_pos_weight=1,
              single_precision_histogram=True, subsample=0.976171515775659,
              tree_method='gpu_hist', use_label_encoder=False,
              validate_parameters=1, verbosity=None)

I load the object using:

clf_model = joblib.load(model_path)

I want to use the object to predict on some data I am using Azure environment which also has xgboost=1.5.2. but it gives error:

File "score.py", line 78, in score_execution
[stderr]    clf_preds = clf_model.predict(clf_data_transformed)
[stderr]  File "/opt/miniconda/lib/python3.8/site-packages/xgboost/sklearn.py", line 1284, in predict
[stderr]    class_probs = super().predict(
[stderr]  File "/opt/miniconda/lib/python3.8/site-packages/xgboost/sklearn.py", line 879, in predict
[stderr]    if self._can_use_inplace_predict():
[stderr]  File "/opt/miniconda/lib/python3.8/site-packages/xgboost/sklearn.py", line 811, in _can_use_inplace_predict
[stderr]    predictor = self.get_params().get("predictor", None)
[stderr]  File "/opt/miniconda/lib/python3.8/site-packages/xgboost/sklearn.py", line 505, in get_params
[stderr]    params.update(cp.__class__.get_params(cp, deep))
[stderr]  File "/opt/miniconda/lib/python3.8/site-packages/xgboost/sklearn.py", line 502, in get_params
[stderr]    params = super().get_params(deep)
[stderr]  File "/opt/miniconda/lib/python3.8/site-packages/sklearn/base.py", line 210, in get_params
[stderr]    value = getattr(self, key)
[stderr]AttributeError: 'XGBModel' object has no attribute 'enable_categorical'

We have same version in pipelines that produce/serialize the model and in the pipeline that deserialize the model to predict on new data.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source