我想绘制一个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.]
谢谢
答案 0 :(得分:0)
This post对如何绘制EER有很好的解释。
等误差率是FNR和FPR曲线相交的第一个点的误差。在你的数据中,它们在第七点相交,两者都等于0.这就是EER。获得零错误听起来很奇怪,但这来自您正在使用的数据,也许您的数据允许零FNR和FPR。