我在尝试手动测试 xgboost 的不同超参数时,总是遇到这个错误。我不确定为什么我会给 dtrain 传递多个参数,尤其是当它以逗号结尾时。
import xgboost as xgbdtrain = xgb.DMatrix(X, label=y)params = {'eta':[0.1]}xgb_cv = xgb.cv( {'disable_default_eval_metric': 1}, params, dtrain=dtrain, seed=1, nfold=5, custom_metric=f1_score)
回答:
xgboost.cv
的签名是 (params, dtrain, ...)
。所以它认为你把禁用评估指标的字典作为 params
传递,把包含 eta 的字典作为 dtrain
传递,然后又试图通过关键字传递另一个 dtrain
。如果 disable_default_eval_metric
应该是另一个参数,请将其添加到包含 eta
的 params
字典中。