我想在model.compile()语句中获得真实的正利率(TPR)和真实的负利率(TNR)作为评估指标之一。
我尝试使用以下代码:
model.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ["accuracy", "tpr", "tnr"])
但是我收到一条错误消息:
未知指标功能:tpr
我认为它们都是keras中的已知指标,因此我不理解此错误。请协助
答案 0 :(得分:1)
如从明确相关的Keras docs,tpr
和tnr
是的不强>天然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