You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

手动计算Precision与scikit-learn结果不一致,求排查错误

问题分析:手动计算Precision与sklearn结果不一致的原因

你的手动计算确实存在错误,核心问题是对Precision指标的计算公式理解有误。

Precision的正确定义

Precision(精确率)针对预测为正例的样本,公式为:

Precision = TP / (TP + FP)

其中:

  • TP(True Positive):预测为1,真实标签也为1的样本数
  • FP(False Positive):预测为1,真实标签为0的样本数

你的手动计算错误点

你代码里的tru_p计算的是所有预测正确的样本总数(包括TP和TN,TN是预测为0且真实为0的样本),这完全不符合Precision的计算逻辑。你用sum(tru_p)/(sum(tru_p)+sum(fal_p))计算的不是Precision,而是一个错误的指标。

修正后的手动计算代码

把tru_p改成仅统计TP的数量:

# 正确计算TP:预测为1且真实为1
tp = sum(e1 == 1 and e2 == 1 for e1, e2 in zip(lst_y_preds2, y_true2))
# FP的计算是对的:预测为1且真实为0
fp = sum(e1 == 1 and e2 == 0 for e1, e2 in zip(lst_y_preds2, y_true2))

print("precision (manual corrected)", tp/(tp+fp))
print("precision (sklearn)", precision_score(y_true2, lst_y_preds2))

验证结果

运行修正后的代码,手动计算结果会和sklearn的0.7727272727272727完全一致,和classification_report里类别1的Precision值也对应上。

内容的提问来源于stack exchange,提问作者user21208477

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:45:56