我正在尝试使用sklearn提供的sklearn包装器来解决多类问题。我的类是0,1,2,我使用的目标是multi:softmax。当我试图安装分类器时,我得到
xgboost.core.XGBoostError:参数num_class的值0应该大于1
如果我试图设置num_class参数,我就会得到错误
得到一个意外的关键字参数'num_class‘
Sklearn是自动设置这个参数的,所以我不应该传递这个参数。但是为什么我会有第一个错误呢?
发布于 2016-12-09 13:58:05
您需要手动将参数num_class添加到xgb_param中
    # Model is an XGBClassifier
    xgb_param = model.get_xgb_params()
    xgb_param['num_class'] = 3
    cvresult = xgb.cv(xgb_param, ...)如果使用XGBClassifier的fit方法,则会自动设置该值,但在cv方法中不会设置该值。
发布于 2018-08-13 12:13:47
在我的示例中,在常规的fit调用过程中抛出了相同的错误。问题的根源在于,目标是手动设置为multi:softmax,但只有两个类。将其改为binary:logistic解决了这个问题。
发布于 2017-04-10 07:03:01
你在使用xgboost.cv函数吗?我遇到了同样的问题,但找到了解决办法。这是我的代码:
    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函数。这个很管用。
https://stackoverflow.com/questions/40116215
复制相似问题