如何获取逻辑回归等分类模型预测结果的类别概率?
获取逻辑回归模型分类置信度/类别概率的方法
scikit-learn中训练好的LogisticRegression模型,predict()方法仅返回概率最高的类别标签,要获取每个类别的对应概率,直接调用内置的predict_proba()方法即可。
核心方法说明
model.predict(输入样本):返回预测的类别标签,不包含概率信息model.predict_proba(输入样本):返回维度为(样本数量, 类别数量)的二维数组,每个元素对应该样本属于某一类别的概率,单样本所有类别概率之和为1model.classes_:模型训练完成后自动生成的属性,存储类别顺序,和predict_proba()返回的概率列顺序一一对应,可避免概率和类别匹配错误
可直接运行的代码示例
原有训练代码无需修改,预测部分补充如下逻辑即可:
model = LogisticRegression() model.fit(x_train, y_train) # 确认概率对应的类别顺序 print(model.classes_) # 鸢尾花数据集上的典型输出:array(['setosa', 'versicolor', 'virginica'], dtype=object) # 拿到测试样本的所有类别概率 prob_result = model.predict_proba(my_one_test) # 格式化输出每个类别的概率 for cls, p in zip(model.classes_, prob_result[0]): print(f"类别{cls}的预测概率:{p*100:.1f}%")
运行后就能得到类似预期的结果:
类别setosa的预测概率:89.0%
类别versicolor的预测概率:6.0%
类别virginica的预测概率:5.0%
如果只需要最终预测类别的置信度,不需要其他类的概率,可以直接取概率数组的最大值:
# 获取单样本预测结果的置信度 confidence = prob_result.max(axis=1)[0]
内容的提问来源于stack exchange,提问作者ProcolHarum
相关产品推荐
相关产品推荐

