scikit中roc_curve中的阈值学习

Lin*_* Ma 5 python machine-learning python-2.7 roc scikit-learn

我指的是下面的链接和示例,并在此页面上张贴了混淆的图。我的困惑是,只有4个阈值,但是roc曲线似乎有很多数据点(> 4个数据点),想知道roc_curve如何在底层工作以找到更多数据点?

http://scikit-learn.org/stable/modules/model_evaluation.html#roc-metrics

>>> import numpy as np
>>> from sklearn.metrics import roc_curve
>>> y = np.array([1, 1, 2, 2])
>>> scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> fpr, tpr, thresholds = roc_curve(y, scores, pos_label=2)
>>> fpr
array([ 0. ,  0.5,  0.5,  1. ])
>>> tpr
array([ 0.5,  0.5,  1. ,  1. ])
>>> thresholds
array([ 0.8 ,  0.4 ,  0.35,  0.1 ])
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

小智 6

正如HaohanWang提到的,函数roc_curve中的参数“ drop_intermediate ”可以删除一些次优阈值以创建更轻的ROC曲线。(roc_曲线)。

如果设置该参数为False,则显示所有阈值,例如: 在此输入图像描述

所有阈值以及相应的 TPR 和 FPR 均已计算,但其中一些对于绘制 ROC 曲线是无用的。


max*_*moo 1

该图实际上来自这个示例:http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html

  • 我明白了,谢谢 maxymoo。我有一个一般性问题,当我们在 scikit learn 中使用“roc_curve”时,我认为为了绘制 ROC 曲线,我们需要选择模型阈值,这反映了相关的 FPR 和 FNR。想知道 scikie 如何学习“roc_curve”选择阈值? (2认同)