【问题标题】:How to plot EER (Equal Error Rate) in python?如何在 python 中绘制 EER(等错误率)?
【发布时间】:2017-09-25 15:56:55
【问题描述】:

我想绘制 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.]

谢谢

【问题讨论】:

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


    【解决方案1】:

    This post 在第一个答案中很好地解释了如何绘制 EER。

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

    【讨论】:

    • 我不知道我是否从混淆矩阵中正确计算了 FPR 和 FNR。也许这就是它们相交于 0 的原因。有什么想法吗?
    • 你的confusion_matrix函数在做什么?
    • 根据混淆矩阵,我计算了 FP(假阳性)、FN(假阴性)、TP(真阳性)和 TN(真阴性)。并使用这些值计算了 FPR 和 FNR;用于制作情节。
    • 您的 FP/FN/TN/TP 计算看起来不错,FPR/FNR 率看起来也不错。查看此link 了解更多信息。
    猜你喜欢
    • 2022-08-22
    • 1970-01-01
    • 2015-04-05
    • 2016-12-31
    • 2015-02-14
    • 1970-01-01
    • 2012-10-18
    • 2013-03-01
    • 1970-01-01
    相关资源
    最近更新 更多