Используя этот код:
from sklearn import metrics
import numpy as np
import matplotlib.pyplot as plt
y_true = [1,0,0]
y_predict = [.6,.1,.1]
fpr, tpr, thresholds = metrics.roc_curve(y_true, y_predict , pos_label=1)
print(fpr)
print(tpr)
print(thresholds)
# Print ROC curve
plt.plot(fpr,tpr)
plt.show()
y_true = [1,0,0]
y_predict = [.6,.1,.6]
fpr, tpr, thresholds = metrics.roc_curve(y_true, y_predict , pos_label=1)
print(fpr)
print(tpr)
print(thresholds)
# Print ROC curve
plt.plot(fpr,tpr)
plt.show()
построены следующие кривые roc:
scikit learn устанавливает пороги, ноЯ хотел бы установить пользовательские пороги.
Например, для значений:
y_true = [1,0,0]
y_predict = [.6,.1,.6]
Возвращаются следующие пороги:
[1.6 0.6 0.1]
Почему значение 1.6 не существуетв кривой РПЦ?Является ли порог 1.6 избыточным в этом случае, поскольку вероятности находятся в диапазоне 0-1?Можно ли установить собственные пороговые значения: .3, .5, .7, чтобы проверить, насколько хорошо классификатор работает в этом случае?
Обновление:
С https://sachinkalsi.github.io/blog/category/ml/2018/08/20/top-8-performance-metrics-one-should-know.html#receiver-operating-characteristic-curve-roc Я использовал тот же xи прогнозируемые значения:
from sklearn import metrics
import numpy as np
import matplotlib.pyplot as plt
y_true = [1,1,1,0]
y_predict = [.94,.87,.83,.80]
fpr, tpr, thresholds = metrics.roc_curve(y_true, y_predict , pos_label=1)
print('false positive rate:', fpr)
print('true positive rate:', tpr)
print('thresholds:', thresholds)
# Print ROC curve
plt.plot(fpr,tpr)
plt.show()
, который создает этот график:
График отличается от ссылочного графика в блоге, также порогиразличаются:
Кроме того, пороговые значения, возвращаемые при использовании scikit metrics.roc_curve
, реализованы так: thresholds: [0.94 0.83 0.8 ]
.Должен ли Scikit возвращать ту же кривую roc, что и в тех же точках?Я должен сам реализовать кривую roc вместо того, чтобы полагаться на реализацию scikit, так как результаты разные?