pytorch 计算tp fp fn tn
时间: 2023-11-07 09:58:03 浏览: 189
PyTorch本身不提供计算TP、FP、FN、TN的函数,但可以使用numpy或其他库进行计算。下面给出一个使用numpy计算TP、FP、FN、TN的示例代码:
```python
import numpy as np
# y_pred为预测结果,y_true为真实结果,threshold为分类阈值
def calculate_confusion_matrix(y_pred, y_true, threshold=0.5):
y_pred = np.where(y_pred > threshold, 1, 0) # 根据阈值将预测结果转为0或1
tp = ((y_pred == 1) & (y_true == 1)).sum() # 计算TP
fp = ((y_pred == 1) & (y_true == 0)).sum() # 计算FP
fn = ((y_pred == 0) & (y_true == 1)).sum() # 计算FN
tn = ((y_pred == 0) & (y_true == 0)).sum() # 计算TN
return tp, fp, fn, tn
```
其中,y_pred和y_true都是numpy数组,分别表示模型的预测结果和真实结果。threshold是分类阈值,可以根据需要调整。函数返回TP、FP、FN、TN四个值。使用时,可以将预测结果和真实结果转为numpy数组后传入该函数,如下所示:
```python
import torch
# 创建一个大小为(2, 3)的模型输出结果Tensor
y_pred = torch.tensor([[0.2, 0.5, 0.8], [0.1, 0.4, 0.9]])
# 创建一个大小为(2, 3)的真实结果Tensor
y_true = torch.tensor([[0, 1, 1], [1, 0, 1]])
# 将Tensor转为numpy数组,并调用calculate_confusion_matrix函数计算混淆矩阵
tp, fp, fn, tn = calculate_confusion_matrix(y_pred.numpy(), y_true.numpy())
print("TP: {}, FP: {}, FN: {}, TN: {}".format(tp, fp, fn, tn))
```
输出结果为:
```
TP: 3, FP: 1, FN: 1, TN: 5
```
说明模型预测了3个正例,但其中有1个是错误的;有1个正例没有被预测出来;有5个负例被正确预测。
阅读全文