Может ли кто-нибудь сказать мне, как я могу вычислить равную частоту ошибок (EER) из кривой ROC в python? В scikit-learn есть метод вычисления кривой roc и auc, но не удалось найти метод для вычисления EER.
from sklearn.metrics import roc_curve, auc
ОТВЕТ:
Думаю, реализовал сам.
Идея ROC EER - это точка пересечения прямой линии, соединяющей (1,0) и (0,1), и кривой roc. Это единственная точка пересечения. Для прямой с a = 1 и b = 1 уравнение будет x+y =1 (x/a +y/b =1.0)
. Таким образом, точкой пересечения будут значения истинно положительных результатов (tpr) и ложных положительных результатов (fpr), которые удовлетворяют следующему уравнению:
x + y - 1.0 = 0.0
Таким образом реализован метод как:
def compute_roc_EER(fpr, tpr):
roc_EER = []
cords = zip(fpr, tpr)
for item in cords:
item_fpr, item_tpr = item
if item_tpr + item_fpr == 1.0:
roc_EER.append((item_fpr, item_tpr))
assert(len(roc_EER) == 1.0)
return np.array(roc_EER)
Итак, здесь одно значение - это частота ошибок, а другое - точность.
Может быть, кто-нибудь поможет мне проверить.
len(roc_EER)==0
. Вам нужно будет интерполировать между двумя точками (по одной с каждой стороны линии EER), чтобы сделать это более надежно. Или для простоты вы можете выбрать настройку с наименьшим расстоянием до линии EER, если вам нужно выбрать одну из протестированных конфигураций. - person Dan Stowell   schedule 25.11.2015