xgboost sklearn包装器值0for参数num_class应大于等于1

Let*_*zee 9 python scikit-learn xgboost

我试图使用XGBClassifiersklearn多类问题提供的包装器.我的课程是[0,1,2],我使用的目标是multi:softmax.当我试图适应分类器时,我得到了

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

如果我尝试设置num_class参数,我得到错误

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

Sklearn会自动设置此参数,因此我不应该传递该参数.但为什么我会收到第一个错误?

Jus*_*bie 7

就我而言,在常规fit通话期间引发了相同的错误。问题的根源是将目标手动设置为multi:softmax,但是只有2个类。更改它以binary:logistic解决问题。


bol*_*old 6

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

    # Model is an XGBClassifier
    xgb_param = model.get_xgb_params()
    xgb_param['num_class'] = 3
    cvresult = xgb.cv(xgb_param, ...)
Run Code Online (Sandbox Code Playgroud)

XGBClassifier如果你使用它不会自动设置这个值fit的方法,但在没有cv方法