如何通过xgboost.train获取概率输出?对比XGBClassifier.predict_proba
用xgboost.train训练后获取概率输出的方法
嗨,我来帮你搞定这个问题~你已经选对了binary:logistic这个目标函数,它本身就是用来输出二分类正类概率的,所以用xgboost.train得到的Booster模型,直接调用predict()方法就能拿到你想要的概率啦。
具体来说,你可以按照下面的步骤扩展你的代码:
- 先把测试数据转换成
DMatrix格式(和训练数据的处理方式一致):
# 假设你的测试特征是X_test dtest = xgb.DMatrix(X_test)
- 调用训练好的
modelXG的predict()方法,直接得到概率数组:
# 获取每个样本属于正类的概率 positive_class_probs = modelXG.predict(dtest)
这个positive_class_probs数组里的每个元素都是0到1之间的数值,对应样本被预测为正类的概率,和你用XGBClassifier.predict_proba()返回结果的第二列(正类概率)完全一致。
补充说明一下:如果是多分类场景,只要你设置了对应的目标函数(比如multi:softprob),predict()方法会返回形状为(样本数, 类别数)的数组,每个元素对应样本在对应类别上的概率。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

