2017-02-06 6 views
0

Я использую sklearn вычислить АУК моей двоичной модели классификации:Как мне получить AUC для отрицательного класса?

roc_auc_score(Y_test_binary, plc.predict_proba(X_test, y_true)) 

возвращает 0.810477872581. Основываясь на моем понимании, он показывает, насколько хорошо модель идентифицирует положительный класс.

Однако, я также хочу знать другую сторону: я бы хотел рассчитать AUC для отрицательного класса. Как я должен это делать? Должен ли я играть со «средним» параметром?

================================================================================================================================== ==========

Кажется, что «average = None» может «возвращать баллы для каждого класса» в соответствии с документацией. Но она по-прежнему возвращает только одно значение:

>>> import numpy as np 
>>> from sklearn.metrics import roc_auc_score 
>>> y_true = np.array([0, 0, 1, 1]) 
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8]) 
>>> roc_auc_score(y_true, y_scores, average=None) 
0.75 

Я ожидаю, что один номер для 1-го класса и один номер для класса 0.

ответ

0

Я не уверен, что это имеет смысл говорить о АУК для отрицательного класса проблема двоичной классификации. Я бы сказал, что это просто (1 - оценка AUC), рассчитанная с положительным классом.

Чтобы убедить-я, давайте повторно использовать ваш пример:

>>> import numpy as np 
>>> from sklearn.metrics import roc_auc_score 
>>> y_true = np.array([0, 0, 1, 1]) 
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8]) 
>>> roc_auc_score(y_true, y_scores) 
0.75 

Вы можете swithc этикетки y_true и получить 0,25:

>>> (y_true == 0).astype(np.int32) 
array([1, 1, 0, 0], dtype=int32) 

>>> roc_auc_score(y_true == 0, y_scores) 
0.25 

Параметр average используется только для задач мульти-класса ,

+0

У меня на самом деле была такая же мысль. Но с учетом этого примера: y_true = np.array ([0, 0, 1, 1]), y_scores = np.array ([0,1, 0,1, 0,9, 0,9]). В этом случае, calssifier может отличить оба класса очень хорошо. AUC для класса 1 равен 1, тогда как AUC для класса 0 равно 0. Кажется, что оба должны быть равны 1. – Munichong

 Смежные вопросы

  • Нет связанных вопросов^_^