【问题标题】:Sklearn f1_score with Unexpected ResultsSklearn f1_score 与意外结果
【发布时间】:2023-04-01 11:35:01
【问题描述】:

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

[[ 3 11]
 [ 5 31]]

如果我手动计算 f1 分数为 2*(precision * recall) / (precision + recall),我得到 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。

感谢您的帮助。

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

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

    精度 = TruePositives / (TruePositives + FalsePositives)

    召回率 = TruePositives / (TruePositives + FalseNegatives)

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

    【讨论】:

    • 这太尴尬了。感谢你的回复。我以某种方式将精度与特异性/真阴性比率混淆了。如果简单地将所有内容归类为 1,则 f1 分数可能会在我的类相当不平衡的情况下产生误导,返回的分数相当不错,约为 0.8。
    猜你喜欢
    • 2021-05-11
    • 1970-01-01
    • 2017-12-27
    • 2020-05-22
    • 2018-09-24
    • 2017-05-31
    • 2018-03-21
    • 1970-01-01
    • 2015-11-03
    相关资源
    最近更新 更多