【问题标题】:How number of thresholds is defined in sklearn roc_curve function?sklearn roc_curve 函数中定义的阈值数量是多少?
【发布时间】:2022-01-12 09:44:18
【问题描述】:

当我使用逻辑回归模型对我的数据使用 sklearn 函数 roc_curve 时:

roc_curve(y_test, predictions_test)

我得到了这个结果:

(array([0. , 0.1, 1. ]), array([0.   , 0.865, 1.   ]), array([2, 1, 0]))
In [137]:

我知道在第三个数组中有阈值,在第一个和第二个中有相应的 TPR 和 FPR。但我不明白为什么会有三个阈值。此函数中定义了多少个阈值?例如,当我使用逻辑回归时,阈值必须是来自 sigmoid 函数的概率,但这里它们是 2,1,0。为什么会这样?

【问题讨论】:

  • 实际上,我事后意识到,您的predictions_test 是什么的规范可能有助于改进答案。

标签: python python-3.x scikit-learn roc


【解决方案1】:

正如您从source code 中看到的(在对_binary_clf_curve() 的调用中,又由roc_curve() here 调用),阈值的数量实际上是由不同的predictions_test 的数量定义的(分数,原则上)。但是,根据您的输出,我想predictions_test 可能是.predict() 的输出(可能是多类分类问题?-在这种情况下,您需要扩展 ROC 曲线定义以处理多类设置) 而不是 .predict_proba().decision_function()roc_curve 要求。

此外,请注意roc_curve 也有一个参数drop_intermediate(默认为 True),在某些情况下,它可能会降低次优阈值。

最后,我建议以下帖子:

【讨论】:

    猜你喜欢
    • 2021-05-22
    • 2021-05-27
    • 2017-01-02
    • 2015-07-15
    • 2018-12-11
    • 2020-06-23
    • 1970-01-01
    • 2021-03-22
    • 2020-07-26
    相关资源
    最近更新 更多