从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]
我在这里做错什么了吗?有人可以尝试重现此错误吗?