【问题标题】:How to evaluate Pytorch model using metrics like precision and recall?如何使用精度和召回等指标评估 Pytorch 模型?
【发布时间】:2020-10-29 06:05:58
【问题描述】:

我已经在一些数据上训练了一个简单的 Pytorch 神经网络,现在希望使用准确度、召回率、f1 和精度等指标对其进行测试和评估。我彻底搜索了 Pytorch 文档,找不到这些指标的任何类或函数。然后我尝试将预测标签和实际标签转换为 numpy 数组并使用 scikit-learn 的指标,但预测标签似乎不是 0 或 1(我的标签),而是连续值。由于这个 scikit-learn 指标不起作用。 Fast.ai 文档也没有多大意义,我无法理解要继承哪个类以实现精度等(尽管我能够计算精度)。非常感谢任何帮助。

【问题讨论】:

标签: python tensorflow scikit-learn metrics tensor


【解决方案1】:

通常,在二元分类设置中,您的神经网络将输出事件发生的概率(例如,如果您在输出层使用 sigmoid 激活和单个神经元),这是一个介于 0 和 1 之间的连续值. 要评估模型的精度和召回率(例如,使用 scikit-learn 的 precision_scorerecall_score),需要将模型的概率转换为二进制值。这是通过为模型的概率指定阈值来实现的。 (有关阈值的概述,请查看此参考:https://developers.google.com/machine-learning/crash-course/classification/thresholding

Scikit-learn 的 precision_recall_curve (https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_curve.html) 通常用于了解精度和召回指标在不同概率阈值下的表现。通过分析每个阈值的精度和召回值,您将能够为您的问题指定最佳阈值(您可能需要更高的精度,因此您将瞄准更高的阈值,例如 90%;或者您可能想要平衡精度和召回率,您需要检查为您的问题返回最佳 f1 分数的阈值)。可以在以下参考资料中找到有关该主题的良好概述:https://machinelearningmastery.com/threshold-moving-for-imbalanced-classification/

我希望这可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2018-09-05
    • 2018-05-11
    • 2021-09-13
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2022-01-06
    相关资源
    最近更新 更多