Вам нужно будет рассчитать истинные положительные и ложноположительные показатели, используя ваш прогнозируемый и истинный класс, при этом изменяя пороговое значение вашего класса (T), т. Е. Пороговое значение, которое вы используете, чтобы предсказать, попадет ли наблюдение в класс 0 или 1.
Вам понадобится набор данных с заголовком, который выглядит следующим образом ...
ID, прогнозируемая вероятность, прогнозируемый класс, истинный класс, порог, флаг истинного позитива, флаг ложного позитива
(подробности см. https://en.wikipedia.org/wiki/Receiver_operating_characteristic).Если вы посмотрите на страницу Wiki, то заметите, что они даже обеспечивают быструю и простую дискретную оценку в пределах «Площадь под кривой».
AUC означает «площадь под кривой», поэтому вам, вероятно, придется выполнитькакая-то числовая интеграция.В этом контексте TPR будет вашим Y, а FPR вашим X при каждом значении T.
Вы можете попробовать использовать что-то вроде трапециевидного правила (https://en.wikipedia.org/wiki/Trapezoidal_rule), если вы хотите, чтобы оно было простым.
Вы можете использовать numpy.trapz (см .: https://docs.scipy.org/doc/numpy/reference/generated/numpy.trapz.html), если вы не хотите реализовывать это самостоятельно, но также нетрудно создать его с нуля (см .: Трапециевидное правило в Python ).
Вы должны быть в состоянии написать функции для них в Python, используя довольно легко только математику и numpy. На самом деле, вам вообще могут не понадобиться какие-либо библиотеки.