如何从keras指标获取TPR和TNR

时间:2019-02-02 13:29:13

标签: python-3.x machine-learning keras

我想在model.compile()语句中获得真实的正利率(TPR)和真实的负利率(TNR)作为评估指标之一。

我尝试使用以下代码:

model.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ["accuracy", "tpr", "tnr"])

但是我收到一条错误消息:

  

未知指标功能:tpr

我认为它们都是keras中的已知指标,因此我不理解此错误。请协助

1 个答案:

答案 0 :(得分:1)

如从明确相关的Keras docstprtnr是的天然Keras度量的一部分;有一个相关的Github thread,但问题仍然是开放的。

但是对于您似乎正在处理的二进制情况,可以直接从scikit-learn获取所需的数量(您需要将模型结果转换为二进制标签,即 not 概率);根据{{​​3}}改编示例:

from sklearn.metrics import confusion_matrix
y_true = [0, 1, 0, 1]
y_pred = [1, 1, 1, 0]
cm = confusion_matrix(y_true, y_pred) # careful with the order of arguments!
tn, fp, fn, tp = cm.ravel()
(tn, fp, fn, tp)
# (0, 2, 1, 1)

在获得这些量,它现在是简单的计算TPR&TNR(参见定义docs):

TPR = tp/(tp+fn)
TPR
# 0.5

TNR = tn/(tn+fp)
TNR
# 0.0

的多级的情况下是一个比较复杂 - 见我的答案在Wikipedia