首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >参数num_class的xgboost sklearn包装器值0应该大于1

参数num_class的xgboost sklearn包装器值0应该大于1
EN

Stack Overflow用户
提问于 2016-10-18 19:11:39
回答 4查看 15.5K关注 0票数 20

我正在尝试使用sklearn提供的sklearn包装器来解决多类问题。我的类是0,1,2,我使用的目标是multi:softmax。当我试图安装分类器时,我得到

xgboost.core.XGBoostError:参数num_class的值0应该大于1

如果我试图设置num_class参数,我就会得到错误

得到一个意外的关键字参数'num_class‘

Sklearn是自动设置这个参数的,所以我不应该传递这个参数。但是为什么我会有第一个错误呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-09 13:58:05

您需要手动将参数num_class添加到xgb_param中

代码语言:javascript
运行
复制
    # Model is an XGBClassifier
    xgb_param = model.get_xgb_params()
    xgb_param['num_class'] = 3
    cvresult = xgb.cv(xgb_param, ...)

如果使用XGBClassifier的fit方法,则会自动设置该值,但在cv方法中不会设置该值。

票数 17
EN

Stack Overflow用户

发布于 2018-08-13 12:13:47

在我的示例中,在常规的fit调用过程中抛出了相同的错误。问题的根源在于,目标是手动设置为multi:softmax,但只有两个类。将其改为binary:logistic解决了这个问题。

票数 17
EN

Stack Overflow用户

发布于 2017-04-10 07:03:01

你在使用xgboost.cv函数吗?我遇到了同样的问题,但找到了解决办法。这是我的代码:

代码语言:javascript
运行
复制
    xgb_param = model.get_xgb_params()
    extra = {'num_class': 3}
    xgb_param.update(extra)
    cvresult = xgb.cv(xgb_param, xgtrain, ...)

xgb_param是XGBoost模型参数的字典。然后我向它追加一个新的dict extra,以指定num_class,将新的dict传递给cv函数。这个很管用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40116215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档