1.问题描述
在使用Xgboost做多分类任务时,出现Check failed: preds.Size() == info.labels.Size()的错误。
出错时的参数如下:
model = XGBClassifier(
max_depth=3, # 每一棵树最大深度,默认6;
learning_rate=0.1, # 学习率,每棵树的预测结果都要乘以这个学习率,默认0.3;
n_estimators=100,
)
2.问题原因
由于使用Xgboost做多分类任务,num_class>2,首先需要设置"objective"为多分类,并且需要设置"num_class"参数。其次多分类时使用的eval_metric不能是auc,需要将auc更改为mlogloss。
3.问题解决
将做多分类任务需要的参数进行更改和添加即可。
model = XGBClassifier(
objective = 'multi:softmax',
num_class = 20,
max_depth=3, # 每一棵树最大深度,默认6;
learning_rate=0.1, # 学习率,每棵树的预测结果都要乘以这个学习率,默认0.3;
n_estimators=100,
eval_metric='mlogloss'
)