首页 > 解决方案 > Sklearn f1_score 与意外结果

问题描述

我想通过使用 Scikit-learn 对我的预测计算 f1_score 来评估机器学习系统。然而,结果并不如预期。调用confusion_matrix 显示

[[ 3 11]
 [ 5 31]]

如果我手动将 f1 分数计算为 2*(精确度 * 召回率)/(精确度 + 召回率),我得到 2*(3/8 * 31/42)/(3/8 + 31/42)= 0.497。但是调用 f1_score(y_true, y_pred, average="binary") 得到 0.7949。有人有解释吗?

即使当真正的标签混合时我调用 f1_score 时的持续预测为 1,我也会得到高分而不是 0 并带有我期待的警告。我怀疑 f1_score 不是我对 avg="binary" 的期望,但我无法理解它。

我的 scikit-learn 版本是 0.21.3。

谢谢你的帮助。

标签: pythonscikit-learn

解决方案


您手动计算精度和召回值时出错。

精度 = TruePositives / (TruePositives + FalsePositives)

召回率 = TruePositives / (TruePositives + FalseNegatives)

请修改你的计算!正确后您将获得 0.7949 的值!


推荐阅读