метрика классификации sklearn auc return ValueError - PullRequest
0 голосов
/ 04 марта 2019

Я строю модель классификации двух классов, используя KNN

Я пытался вычислить auc_score с помощью

from sklearn.metrics import auc

auc(y_test, y_pred)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-183-980dc3c4e3d7> in <module>
----> 1 auc(y_test, y_pred)

~/.local/lib/python3.6/site-packages/sklearn/metrics/ranking.py in auc(x, y, reorder)
    117             else:
    118                 raise ValueError("x is neither increasing nor decreasing "
--> 119                                  ": {}.".format(x))
    120 
    121     area = direction * np.trapz(y, x)

ValueError: x is neither increasing nor decreasing : [1 1 1 ... 1 1 1].

Затем я использовал roc_auc_score

from sklearn.metrics import roc_auc_score
roc_auc_score(y_test, y_pred)
0.5118361429056588

Почему auc не работает, где roc_auc_score работает.Я хоть они оба были одинаковыми?Что мне здесь не хватает?

Здесь y_test - это фактические целевые значения, а y_pred - мои прогнозируемые значения.

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

AUC чаще всего используется для обозначения AUROC, которыйЭто плохая практика, поскольку, как отметил Марк Клазен, AUC неоднозначен (может быть любой кривой), а AUROC нет.

  • Для двоичной классификации необходимо использовать метрику ROC AUC, а не в области подКривая.

Причина ошибки в AUC объясняется следующей ошибкой

x не увеличивается и не уменьшается: [1 1 1 ... 11 1]

Метрика auc использует правило трапеции для аппроксимации области под кривой, а для правила трапеции требуется функция выборки с регулярным интервалом, т.е.для функции y = exp (x ^ 2)

X: 0,0, 0,1, 0,2, 0,3, 0,4

Y: 1,00000 1,01005 1,04081 1,09417 1,17351

Следовательно, X должен быть либо монотонно возрастающим, либо монотонно убывающим, а Y - простопоставить функцию в этой точке.

0 голосов
/ 04 марта 2019

Они различаются по реализации и назначению:

auc:

Вычислить площадь под кривой (AUC) с использованием правила трапеции.Это общая функция, заданная точками на кривой.

roc_auc_score:

Область вычисления по кривой рабочих характеристик приемника (ROC AUC) из баллов прогнозирования.

Это означает, что auc является более общим, чем roc_auc_score, хотя вы можете получить то же значение roc_auc_curve из auc.Следовательно, входной параметр auc - это координаты x и y указанной кривой, и ваша ошибка происходит из-за разницы в типах необходимого ввода!Кроме того, x и y должны быть в порядке возрастания или убывания.

...