У меня есть многоуровневый классификатор, написанный в Keras, из которого я хочу вычислить AUC и построить кривую ROC для каждого элемента, классифицированного из моего тестового набора.roc_curve из многоуровневой классификации имеет наклон
Все, кажется, прекрасно, за исключением того, что некоторые элементы имеют кривую ROC, которые имеют наклон следующим образом:
Я не знаю, как интерпретировать наклон в таких случаях ,
В основном мой рабочий процесс идет следующим образом, у меня есть предварительно обученный model
, экземпляр Keras, и у меня есть признаки X
и двоичные этикетки y
, каждый элемент y
представляет собой массив длины 1000, как это многоуровневая проблема классификации, каждый элемент в y
может содержать много 1s, что указывает на принадлежность элемента к кратным классам, поэтому я использовал встроенную потерю binary_crossentropy
, и мои результаты прогнозирования модели - это проблемы с запасом. Затем я рисую кривую кривой следующим образом.
from sklearn.metrics import roc_curve, auc
#...
for xi, yi in (X_test, y_test):
y_pred = model.predict([xi])[0]
fpr, tpr, _ = roc_curve(yi, y_pred)
plt.plot(fpr, tpr, color='darkorange', lw=0.5)
Метод предсказания возвращает вероятности, поскольку я использую функциональный api keras.
Кто-нибудь знает, почему кривые рока выглядят так?
Возможно, вы захотите посмотреть на roc_auc_score (здесь: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html#sklearn.metrics.roc_auc_score) вместо roc_curve, поскольку последний может не соответствовать многоуровневой настройке; первый говорит, что поддерживается многолучевая связь. – StatsSorceress