有人能告诉我如何在Python中从ROC曲线计算等误差率(EER)吗?在scikit-learn中有计算ROC曲线和AUC的方法,但找不到计算EER的方法。
from sklearn.metrics import roc_curve, auc
回答:
我认为我自己实现了。
ROC EER的想法是连接(1,0)和(0,1)的一条直线与ROC曲线相交的交点。它是唯一的交点。对于一个斜率为1且截距为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 线距离最小的设置。 - Dan Stowell