Python利用Pytorch实现绘制ROC与PR曲线图

当我们需要评估二分类模型的性能时,ROC曲线和PR曲线是两个常用的工具。在Python中,我们可以使用PyTorch库来绘制这些曲线。下面是绘制ROC曲线和PR曲线的完整攻略,包括两个示例说明。

1. 绘制ROC曲线

ROC曲线是一种用于评估二分类模型性能的工具,它显示了真阳性率(TPR)与假阳性率(FPR)之间的关系。以下是使用PyTorch绘制ROC曲线的步骤:

  1. 导入必要的库

python
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc
import torch

  1. 定义模型和数据

```python
# 定义模型
class Net(torch.nn.Module):
def init(self):
super(Net, self).init()
self.fc1 = torch.nn.Linear(2, 10)
self.fc2 = torch.nn.Linear(10, 1)
self.sigmoid = torch.nn.Sigmoid()

   def forward(self, x):
       x = torch.relu(self.fc1(x))
       x = self.sigmoid(self.fc2(x))
       return x

# 定义数据
x = torch.randn(1000, 2)
y = torch.randint(0, 2, (1000, 1)).float()
```

  1. 训练模型并预测

```python
# 训练模型
net = Net()
criterion = torch.nn.BCELoss()
optimizer = torch.optim.SGD(net.parameters(), lr=0.01)
for epoch in range(100):
optimizer.zero_grad()
output = net(x)
loss = criterion(output, y)
loss.backward()
optimizer.step()

# 预测
y_pred = net(x).detach().numpy()
```

  1. 计算FPR和TPR

python
fpr, tpr, _ = roc_curve(y, y_pred)
roc_auc = auc(fpr, tpr)

  1. 绘制ROC曲线

python
plt.figure()
lw = 2
plt.plot(fpr, tpr, color='darkorange',
lw=lw, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()

运行上述代码,即可绘制ROC曲线。

2. 绘制PR曲线

PR曲线是一种用于评估二分类模型性能的工具,它显示了精确率(Precision)与召回率(Recall)之间的关系。以下是使用PyTorch绘制PR曲线的步骤:

  1. 导入必要的库

python
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve, auc
import torch

  1. 定义模型和数据

```python
# 定义模型
class Net(torch.nn.Module):
def init(self):
super(Net, self).init()
self.fc1 = torch.nn.Linear(2, 10)
self.fc2 = torch.nn.Linear(10, 1)
self.sigmoid = torch.nn.Sigmoid()

   def forward(self, x):
       x = torch.relu(self.fc1(x))
       x = self.sigmoid(self.fc2(x))
       return x

# 定义数据
x = torch.randn(1000, 2)
y = torch.randint(0, 2, (1000, 1)).float()
```

  1. 训练模型并预测

```python
# 训练模型
net = Net()
criterion = torch.nn.BCELoss()
optimizer = torch.optim.SGD(net.parameters(), lr=0.01)
for epoch in range(100):
optimizer.zero_grad()
output = net(x)
loss = criterion(output, y)
loss.backward()
optimizer.step()

# 预测
y_pred = net(x).detach().numpy()
```

  1. 计算Precision和Recall

python
precision, recall, _ = precision_recall_curve(y, y_pred)
pr_auc = auc(recall, precision)

  1. 绘制PR曲线

python
plt.figure()
lw = 2
plt.plot(recall, precision, color='darkorange',
lw=lw, label='PR curve (area = %0.2f)' % pr_auc)
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall example')
plt.legend(loc="lower right")
plt.show()

运行上述代码,即可绘制PR曲线。

以上就是使用PyTorch绘制ROC曲线和PR曲线的完整攻略,包括两个示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python利用Pytorch实现绘制ROC与PR曲线图 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • pytorch 使用单个GPU与多个GPU进行训练与测试的方法

    在PyTorch中,我们可以使用单个GPU或多个GPU进行模型训练和测试。本文将详细讲解如何使用单个GPU和多个GPU进行训练和测试,并提供两个示例说明。 1. 使用单个GPU进行训练和测试 在PyTorch中,我们可以使用torch.cuda.device()方法将模型和数据移动到GPU上,并使用torch.nn.DataParallel()方法将模型复制…

    PyTorch 2023年5月15日
    00
  • Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式

    将单张图片转为PyTorch张量是深度学习中常见的操作之一。在PyTorch中,我们可以使用PIL和Numpy库来实现这一操作。本文将提供一个详细的图文教程,介绍如何使用PIL和Numpy将单张图片转为PyTorch张量,并提供两个示例说明。 1. 使用PIL将单张图片转为PyTorch张量 以下是一个示例代码,展示了如何使用PIL将单张图片转为PyTorc…

    PyTorch 2023年5月15日
    00
  • Pytorch GPU内存占用很高,但是利用率很低如何解决

    当PyTorch GPU内存占用很高,但是利用率很低时,可能是由于以下原因: 数据加载器的num_workers参数设置过高,导致CPU和GPU之间的数据传输效率低下。 模型过于复杂,导致GPU内存占用过高,而GPU利用率低下。 训练数据集过小,导致GPU利用率低下。 为了解决这个问题,我们可以采取以下措施: 调整数据加载器的num_workers参数,使其…

    PyTorch 2023年5月15日
    00
  • 动手学深度学习PyTorch版-task03

    课后习题 训练集、验证集和测试集的意义https://blog.csdn.net/ch1209498273/article/details/78266558有了模型后,训练集就是用来训练参数的,说准确点,一般是用来梯度下降的。而验证集基本是在每个epoch完成后,用来测试一下当前模型的准确率。因为验证集跟训练集没有交集,因此这个准确率是可靠的。那么为啥还需要…

    2023年4月8日
    00
  • PyTorch零基础入门之逻辑斯蒂回归

    PyTorch零基础入门之逻辑斯蒂回归 本文将介绍如何使用PyTorch实现逻辑斯蒂回归模型。逻辑斯蒂回归是一种二元分类模型,它可以用于预测一个样本属于两个类别中的哪一个。 1. 数据集 我们将使用Iris数据集进行逻辑斯蒂回归模型的训练和测试。该数据集包含150个样本,每个样本包含4个特征和1个标签。我们将使用前100个样本作为训练集,后50个样本作为测试…

    PyTorch 2023年5月15日
    00
  • 从 Numpy+Pytorch 到 TensorFlow JS:总结和常用平替整理

    demo展示 这是一个剪刀石头布预测模型,会根据最近20局的历史数据训练模型,神经网络输入为最近2局的历史数据。 如何拥有较为平滑的移植体验? 保持两种语言,和两个框架的API文档处于打开状态,并随时查阅:Python,JavaScript;Pytorch,TensorFlow JS(用浏览器 F3 搜索关键词)。 可选阅读,《动手学深度学习》,掌握解决常见…

    2023年4月8日
    00
  • [PyTorch] rnn,lstm,gru中输入输出维度

    本文中的RNN泛指LSTM,GRU等等CNN中和RNN中batchSize的默认位置是不同的。 CNN中:batchsize的位置是position 0. RNN中:batchsize的位置是position 1. 在RNN中输入数据格式: 对于最简单的RNN,我们可以使用两种方式来调用,torch.nn.RNNCell(),它只接受序列中的单步输入,必须显…

    PyTorch 2023年4月8日
    00
  • pytorch的visdom启动不了、蓝屏

    pytorch的visdom启动不了、蓝屏     问题描述:我是在ubuntu16。04上用python3.5安装的visdom。可是启动是蓝屏:在网上找了很久的解决方案:有三篇博文:      https://blog.csdn.net/qq_22194315/article/details/78827185 https://blog.csdn.net/…

    PyTorch 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部