Из документации sklearn's roc_curve (https://scikit -learn.org / stable / modules / generate / sklearn.metrics.roc_curve.html ) я понимаю, что первое пороговое значение выбрано как max (предсказания) +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]
Я что-то здесь не так делаю? Может ли кто-нибудь попытаться воспроизвести эту ошибку?