XGBoostError:在XGBoostClassifier模型上运行RandomGridSearchCV的未知gbm类型g

2024-04-16 20:42:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在XGBoostClassifier上运行RandomizedGridSearchCV,其中包含一组用于运行网格搜索的参数,但在运行RandomizedGridCV代码时,程序遇到以下错误-

C:\Users\Shikhar\AppData\Roaming\Python\Python38\site-packages\sklearn\model_selection\_search.py:285: UserWarning: The total space of parameters 6 is smaller than n_iter=500. Running 6 iterations. For exhaustive searches, use GridSearchCV.
  warnings.warn(
C:\Users\Shikhar\AppData\Roaming\Python\Python38\site-packages\sklearn\model_selection\_search.py:918: UserWarning: One or more of the test scores are non-finite: [nan nan nan nan nan nan]
  warnings.warn(
C:\ProgramData\Anaconda3\lib\site-packages\xgboost\sklearn.py:888: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].
  warnings.warn(label_encoder_deprecation_msg, UserWarning)
---------------------------------------------------------------------------
XGBoostError                              Traceback (most recent call last)
<ipython-input-38-9e95bcb72de1> in <module>
     11 )
     12 
---> 13 trained_classifiers = classifier.fit(X_train[top_features], y_train)
     14 
     15 best_classifier = trained_classifiers.best_estimator_

~\AppData\Roaming\Python\Python38\site-packages\sklearn\utils\validation.py in inner_f(*args, **kwargs)
     61             extra_args = len(args) - len(all_args)
     62             if extra_args <= 0:
---> 63                 return f(*args, **kwargs)
     64 
     65             # extra_args > 0

~\AppData\Roaming\Python\Python38\site-packages\sklearn\model_selection\_search.py in fit(self, X, y, groups, **fit_params)
    878             refit_start_time = time.time()
    879             if y is not None:
--> 880                 self.best_estimator_.fit(X, y, **fit_params)
    881             else:
    882                 self.best_estimator_.fit(X, **fit_params)

C:\ProgramData\Anaconda3\lib\site-packages\xgboost\core.py in inner_f(*args, **kwargs)
    420         for k, arg in zip(sig.parameters, args):
    421             kwargs[k] = arg
--> 422         return f(**kwargs)
    423 
    424     return inner_f

C:\ProgramData\Anaconda3\lib\site-packages\xgboost\sklearn.py in fit(self, X, y, sample_weight, base_margin, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set, feature_weights, callbacks)
    907             eval_group=None, label_transform=label_transform)
    908 
--> 909         self._Booster = train(xgb_options, train_dmatrix,
    910                               self.get_num_boosting_rounds(),
    911                               evals=evals,

C:\ProgramData\Anaconda3\lib\site-packages\xgboost\training.py in train(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks)
    225     Booster : a trained booster model
    226     """
--> 227     bst = _train_internal(params, dtrain,
    228                           num_boost_round=num_boost_round,
    229                           evals=evals,

C:\ProgramData\Anaconda3\lib\site-packages\xgboost\training.py in _train_internal(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks, evals_result, maximize, verbose_eval, early_stopping_rounds)
    100         # Skip the first update if it is a recovery step.
    101         if version % 2 == 0:
--> 102             bst.update(dtrain, i, obj)
    103             bst.save_rabit_checkpoint()
    104             version += 1

C:\ProgramData\Anaconda3\lib\site-packages\xgboost\core.py in update(self, dtrain, iteration, fobj)
   1278 
   1279         if fobj is None:
-> 1280             _check_call(_LIB.XGBoosterUpdateOneIter(self.handle,
   1281                                                     ctypes.c_int(iteration),
   1282                                                     dtrain.handle))

C:\ProgramData\Anaconda3\lib\site-packages\xgboost\core.py in _check_call(ret)
    187     """
    188     if ret != 0:
--> 189         raise XGBoostError(py_str(_LIB.XGBGetLastError()))
    190 
    191 

XGBoostError: [22:30:15] C:\Users\Administrator\workspace\xgboost-win64_release_1.3.0\src\gbm\gbm.cc:26: Unknown gbm type g

xgboost版本是1.3.3

我们将高度赞赏任何其他这样做的方法

当我用GridSearchCV替换RandomizedGridSearchCV时,程序运行没有任何错误

代码:

import xgboost as xgb

model = xgb.XGBClassifier()

from sklearn.model_selection import RandomizedSearchCV, GridSearchCV

TRAINING_PARAMETERS = {
    "n_estimators" : [500, 300, 700],
    "learning_rate": [0.001, 0.1, 1],
    "subsample"    : [.7, 0.8, 0.9],
    "max_depth"    : [3, 4, 5]
}

classifier = RandomizedSearchCV(
    estimator = model,
    param_distributions = TRAINING_PARAMETERS,
    n_jobs = 16,
    n_iter = 500,
    cv = 3,
    #scoring = "roc_auc",
    #verbose = 15 
)

trained_classifiers = classifier.fit(X_train[top_features], y_train)

数据由122个特征列组成,样本量为500+。目标是二进制(0和1)


Tags: inpyselfmodellibpackagessiteargs