【工程实践】解决Xgboost做多分类任务出现Check failed: preds.Size() == info.labels.Size()错误

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'
    )

你可能感兴趣的:(分类,python,xgboost)