如何在python中绘制EER(等错误率)?

时间:2017-04-27 17:56:01

标签: python python-3.x visualization biometrics confusion-matrix

我想绘制一个21级分类的表现。所以我想到绘制EER(等错误率)。

我已经计算了混淆矩阵并且能够估计每个类的FPR和FNR。并绘制两个阵列。但我的情节看起来很奇怪。

这是绘制FPR与FNR以获得EER的正确方法吗?

我的代码:

cm = confusion_matrix(y_oos, y_oos_pred)
cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis] 

FP = cm.sum(axis=0) - np.diag(cm)  
FN = cm.sum(axis=1) - np.diag(cm)  
TP = np.diag(cm) 
TN = (len(y_oos) - (FP + FN + TP))

# False positive rate
FPR = FP/(FP+TN)

# False negative rate
FNR = FN/(TP+FN)


plt.plot(np.sort(FPR)) # Sorted in ascending order
plt.plot(np.sort(FNR)[::-1]) # Sorted in descending order


FPR array is ascending order:
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0125 0.0125 0.0125 0.0125 0.025  0.0375]


FNR array in descending order:
[ 0.75 0.5 0.25 0.25 0.25 0.25 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.    0. 0. 0.]

enter image description here

谢谢

1 个答案:

答案 0 :(得分:0)

在第一个答案中,

This post对如何绘制EER有很好的解释。

等误差率是FNR和FPR曲线相交的第一个点的误差。在你的数据中,它们在第七点相交,两者都等于0.这就是EER。获得零错误听起来很奇怪,但这来自您正在使用的数据,也许您的数据允许零FNR和FPR。