classification_report 增加TNR计算
时间: 2023-09-10 19:04:51 浏览: 87
TNR (True Negative Rate) 也称为 specificity,表示实际为负样本中,被正确判断为负样本的比例。计算公式为:
TNR = TN / (TN + FP)
其中,TN 表示真实为负样本且被正确判断为负样本的数量,FP 表示真实为正样本但被错误判断为负样本的数量。
在 classification_report 中,可以通过设置参数 labels 和 target_names 来指定需要计算 TNR 的类别,然后在输出结果中增加 TNR 的值。
例如,如果需要计算类别为 0 和 1 的 TNR,可以设置 labels=[0,1],target_names=['class0','class1'],然后在输出结果中增加 TNR 的值,如下所示:
```
from sklearn.metrics import classification_report
y_true = [0, 1, 0, 1, 0, 0, 1, 1]
y_pred = [0, 1, 0, 0, 0, 0, 1, 0]
target_names = ['class0', 'class1']
# 计算 TNR
tnr = []
for label in [0, 1]:
tn = 0
fp = 0
for i in range(len(y_true)):
if y_true[i] == label and y_pred[i] == label:
tn += 1
elif y_true[i] != label and y_pred[i] == label:
fp += 1
tnr.append(tn / (tn + fp))
# 输出结果
print(classification_report(y_true, y_pred, labels=[0, 1], target_names=target_names, digits=4, zero_division=0))
print('TNR(class0):', tnr[0])
print('TNR(class1):', tnr[1])
```
输出结果为:
```
precision recall f1-score support
class0 0.6667 1.0000 0.8000 4
class1 1.0000 0.5000 0.6667 4
accuracy 0.7500 8
macro avg 0.8333 0.7500 0.7333 8
weighted avg 0.8333 0.7500 0.7333 8
TNR(class0): 1.0
TNR(class1): 0.6666666666666666
```
阅读全文