我可能在文档中忽略了这个问题,但我想知道是否有办法使用XGBoost生成预测结果和相应的概率?在我的案例中,我正在尝试预测一个多类分类器。如果能返回“Medium – 88%”这样的结果就太好了。
- 分类器 = Medium
- 预测概率 = 88%
参数
params = { 'max_depth': 3, 'objective': 'multi:softmax', # error evaluation for multiclass training 'num_class': 3, 'n_gpus': 0}
预测
pred = model.predict(D_test)
结果
array([2., 2., 1., ..., 1., 2., 2.], dtype=float32)
用户友好(标签编码器)
pred_int = pred.astype(int)label_encoder.inverse_transform(pred_int[:5])array(['Medium', 'Medium', 'Low', 'Low', 'Medium'], dtype=object)
编辑:@Reveille建议使用predict_proba。我没有实例化XGBClassifer()。我应该这样做吗?如果是的话,我应该如何修改我的流程来使用它?
params = { 'max_depth': 3, 'objective': 'multi:softmax', # error evaluation for multiclass training 'num_class': 3, 'n_gpus': 0}steps = 20 # The number of training iterationsmodel = xgb.train(params, D_train, steps)
回答:
你可以尝试pred_p = model.predict_proba(D_test)
我手头有一个例子(不过不是多类分类):
如@scarpacci在评论中提到的(参考):
predict_proba()方法仅在scikit-learn接口中存在