You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

xgboost.cv调用报TypeError:dtrain参数被多次赋值该如何解决?

报错原因

你遇到的TypeError: cv() got multiple values for argument 'dtrain'报错,本质是xgb.cv()的位置参数匹配错误:

  • xgb.cv()的第一个位置形参为超参字典params,第二个位置形参就是dtrain
  • 你的代码前两个位置参数分别传了{'disable_default_eval_metric': 1}和自定义的params字典,第二个位置的params已经被自动识别为dtrain的入参,后续你又显式指定了dtrain=dtrain,就出现了同一个参数被传两次的冲突。
修复方案

把两组超参配置合并到同一个字典作为第一个入参即可,同时注意xgb.cv本身不支持自动遍历超参组合,不需要把eta的值放到列表里,修改后代码如下:

import xgboost as xgb
dtrain = xgb.DMatrix(X, label=y)
# 合并所有超参到同一个字典
params = {
    'eta': 0.1,
    'disable_default_eval_metric': 1
}
xgb_cv = xgb.cv(
    params,
    dtrain=dtrain,
    seed=1,
    nfold=5,
    custom_metric=f1_score
)

如果你需要测试多组超参数效果,自行编写循环遍历参数列表,每次调用xgb.cv传入单组参数即可。


内容的提问来源于stack exchange,提问作者Tomward Matthias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:45:03