我正在尝试使用 xgb 的 cv 函数和贝叶斯优化(使用 hyperopt 包)优化 XGBRegressor 的超参数。这是我用于 cv 部分的代码。
dtrain = xgb.DMatrix(X_train, label=y_train)
cv_results = xgb.cv(params,dtrain,num_boost_round = 1000, folds= cv_folds,
stratified = False, early_stopping_rounds = 100, metrics="rmse", seed = 44)
但是,我在xgb.cv函数中收到以下错误(跟踪的一部分):
414 cvfolds = mknfold(dtrain, nfold, params, seed, metrics, fpreproc,
--> 415 stratified, folds, shuffle)
416
417 # setup callbacks
/anaconda3/envs/py36/lib/python3.6/site-packages/xgboost/training.py in mknfold(dall, nfold, param, seed, evals, fpreproc, stratified, folds, shuffle)
261 except TypeError:
262 # Custom stratification using Sklearn KFoldSplit object
--> 263 splits = list(folds.split(X=dall.get_label(), y=dall.get_label()))
264 in_idset = [x[0] for x in splits]
265 out_idset = [x[1] for x in splits]
AttributeError: 'int' object has no attribute 'split'
我不知道为什么我会收到这个错误。xgboost 的文档也不是很清楚和稀疏。因此,任何帮助将不胜感激。
谢谢