python - 如何从keras指标中获取TPR和TNR

标签 python machine-learning keras

我想获取 model.compile() 语句中的真阳性率 (TPR) 和真阴性率 (TNR) 作为评估指标之一。

我尝试使用以下代码:

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

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

Unknown metric function: tpr

我相信它们都是 keras 中的已知指标,所以我不明白这个错误。请帮忙

最佳答案

从相关的Keras docs可以清楚地看出、tprtnr 不是 native Keras 指标的一部分;有相关Github thread ,但问题仍然悬而未决。

但是对于您似乎正在处理的二进制情况,从 scikit-learn 获取所需的数量很简单(您需要将模型结果转换为二进制标签,即不是概率);改编 docs 中的示例:

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(请参阅 Wikipedia 中的定义):

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

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

多类情况有点复杂 - 请参阅我的回答 How to get precision, recall and f-measure from confusion matrix in Python .

关于python - 如何从keras指标中获取TPR和TNR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54493553/

相关文章:

python - 在 Keras 中使用有状态 LSTM 训练多变量多序列回归问题

python - 在 python 中解析日期的优雅方式

python - 修复 Python 中的乱码文件名?

python - 无法使用发布请求从网页中获取某些内容

python - 使用字典转换 tensorflow 数组中的元素

python - Keras load_model 返回传递给优化器的意外关键字参数 : amsgrad

Python - 将 .readlines() 与 .rstrip() 结合使用,然后将所有单词存储到列表中

python-2.7 - 尽管有两个类别,二元分类 SVM 仍给出一个类别值错误

machine-learning - Weka 中的训练和测试集不兼容

python - 使用 LSTM 网络和 Keras 进行文本分类