Я обучил двоичный классификатор, но я думаю, что моя кривая ROC неверна.
Это вектор, который содержит метки:
y_true= [0, 1, 1, 1, 0, 1, 0, 1, 0]
, а второй вектор - оценкаvector
y_score= [
0.43031937, 0.09115553, 0.00650781, 0.02242869, 0.38608587,
0.09407699, 0.40521139, 0.08062053, 0.37445426
]
Когда я строю свою кривую ROC, я получаю следующее:
![enter image description here](https://i.stack.imgur.com/6gvyV.png)
Я думаю, что код правильный,но я не понимаю, почему я получаю эту кривую и почему списки tpr
, fpr
и threshold
имеют длину 4. Почему мой AUC равен нулю?
fpr [0. 0.25 1. 1. ]
tpr [0. 0. 0. 1.]
thershold [1.43031937 0.43031937 0.37445426 0.00650781]
Мой код:
import sklearn.metrics as metrics
fpr, tpr, threshold = metrics.roc_curve(y_true, y_score)
roc_auc = metrics.auc(fpr, tpr)
# method I: plt
import matplotlib.pyplot as plt
plt.title('Receiver Operating Characteristic')
plt.plot(fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)
plt.legend(loc = 'lower right')
plt.plot([0, 1], [0, 1],'r--')
plt.xlim([0, 1])
plt.ylim([0, 1])
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.show()