如何在Python中计算平衡逻辑回归模型的精确率、召回率及单值F1分数
解决平衡逻辑回归模型的精确率、召回率及F1分数计算问题
核心问题分析
你当前F1分数输出两个值,是因为默认计算了二分类任务中两类的分数。要得到单值(通常对应正类指标),只需指定目标类别参数;而精确率、召回率可直接用scikit-learn的专用函数计算,无需手动实现。
完整代码实现
假设你已完成模型训练,以下是指标计算与格式化输出的代码:
from sklearn.metrics import precision_score, recall_score, f1_score # 替换为你的真实标签和预测结果变量 y_true = ... y_pred = ... # 计算正类的精确率、召回率、F1分数(假设正类标签为1,可根据你的数据调整) precision = precision_score(y_true, y_pred, pos_label=1) recall = recall_score(y_true, y_pred, pos_label=1) f1 = f1_score(y_true, y_pred, pos_label=1) # 按要求格式输出 print(f"precision {precision:.2f}") print(f"recall {recall:.2f}") print(f"f1_score {f1:.2f}")
参数说明
pos_label: 指定需要计算的正类标签值(比如你的数据中正类是0或1,对应修改即可),确保只输出单类指标值。- 若需宏观平均的单值(多分类场景),可替换
pos_label=1为average='macro',但平衡逻辑回归通常为二分类,使用pos_label更贴合需求。
现有代码调整建议
如果你之前使用classification_report等函数导致多值输出,直接替换为上述单个指标计算函数即可。注意保证y_true和y_pred的维度与标签取值一致。
内容的提问来源于stack exchange,提问作者kjnk
相关产品推荐
相关产品推荐

