sklearn roc曲线函数阈值无法正常工作

时间:2019-04-05 22:03:56

标签: python scikit-learn roc

从sklearn的roc_curve(https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html)的文档中,我知道将第一个阈值选择为max(predictions)+1,以确保曲线从原点开始。但是,由于某种原因,有时该功能没有表现出这种现象。简单的工作示例:

from sklearn.metrics import roc_curve
pred = [0.54836529, 0.42196323, 0.38207147, 0.37080573, 0.36138288]
true = [1., 1., 1., 1., 1.]
fpr, tpr, thresholds = roc_curve(true,pred)
print(thresholds)
>>>>> [0.54836529 0.31656115]

这仅仅是max(pred),没有添加+1。我了解在我的用例中,FPR是没有意义的,但这不应导致这种不良行为。此外,当在我的true列表中同时具有正数和负数时,它也会显示:

from sklearn.metrics import roc_curve
pred = [0.54836529, 0.42196323, 0.38207147, 0.37080573, 0.36138288, 0.33759752,
 0.32965766, 0.31987022, 0.32147135, 0.31954395, 0.31823744, 0.31692976,
 0.31665266, 0.31661259, 0.31656115, 0.31656341, 0.31656842, 0.31656899,
 0.3165681,  0.31656433, 0.31656114, 0.31655793, 0.31655027, 0.31655875,
 0.31655297, 0.31655229, 0.31655317, 0.31654948, 0.31654313, 0.31656347]
true = [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1. ,1. ,1. ,1. ,1. ,1., 1.,
 1.,1.,1.,0.,0.,0.]
fpr, tpr, thresholds = roc_curve(true,pred)
print(thresholds)
>>>>>[0.54836529 0.31656433 0.31656347 0.31655027 0.31654313]

我在这里做错什么了吗?有人可以尝试重现此错误吗?

0 个答案:

没有答案