Python xgboost sklearn参数num_类的包装值0应大于等于1
我试图使用Python xgboost sklearn参数num_类的包装值0应大于等于1,python,scikit-learn,xgboost,Python,Scikit Learn,Xgboost,我试图使用sklearn提供的XGBClassifier包装器解决多类问题。我的类是[0,1,2],我使用的目标是multi:softmax。当我试图适应分类器时,我得到 xgboost.core.XGBoosError:参数num_类的值0应大于等于1 如果我试图设置num_类参数,我会得到错误 获取了意外的关键字参数“num\u class” Sklearn正在自动设置此参数,因此我不应该传递该参数。但是为什么会出现第一个错误?您需要手动将参数num\u class添加到xgb\u参数中
sklearn
提供的XGBClassifier
包装器解决多类问题。我的类是[0,1,2],我使用的目标是multi:softmax
。当我试图适应分类器时,我得到
xgboost.core.XGBoosError:参数num_类的值0应大于等于1
如果我试图设置num_类参数,我会得到错误
获取了意外的关键字参数“num\u class”
Sklearn正在自动设置此参数,因此我不应该传递该参数。但是为什么会出现第一个错误?您需要手动将参数
num\u class
添加到xgb\u参数中
# Model is an XGBClassifier
xgb_param = model.get_xgb_params()
xgb_param['num_class'] = 3
cvresult = xgb.cv(xgb_param, ...)
如果您使用其
fit
方法,则XGBClassifier会自动设置此值,但在cv
方法中不会设置此值是否使用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模型参数的字典。然后我向它附加一个新的dictextra
,以指定num_类
,将新的dict传递给cv
函数。这是可行的。在我的例子中,在常规的fit
调用中抛出了相同的错误。问题的根源在于目标被手动设置为multi:softmax
,但只有两个类。将其更改为二进制:logistic
解决了问题