Pytorch 计算误判率,计算准确率,计算召回率的例子

在深度学习中,我们通常需要计算模型的准确率、误判率和召回率等指标,以评估模型的性能。在PyTorch中,我们可以使用混淆矩阵来计算这些指标。下面是两个示例,分别演示如何计算准确率、误判率和召回率。

示例1:计算准确率、误判率和召回率

在这个示例中,我们将使用PyTorch计算一个二分类模型的准确率、误判率和召回率。具体来说,我们将使用一个名为BinaryClassifier的类来定义二分类模型,并使用sklearn模块生成一些随机数据。下面是一个示例:

import torch
import numpy as np
from sklearn.metrics import confusion_matrix

class BinaryClassifier(torch.nn.Module):
    def __init__(self):
        super(BinaryClassifier, self).__init__()
        self.linear = torch.nn.Linear(2, 1)

    def forward(self, x):
        x = self.linear(x)
        return torch.sigmoid(x)

# 生成随机数据
np.random.seed(0)
X = np.random.randn(100, 2)
y = np.random.randint(0, 2, 100)

# 定义模型和优化器
model = BinaryClassifier()
criterion = torch.nn.BCELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 训练模型
for epoch in range(100):
    inputs = torch.from_numpy(X).float()
    labels = torch.from_numpy(y).float().view(-1, 1)
    optimizer.zero_grad()
    outputs = model(inputs)
    loss = criterion(outputs, labels)
    loss.backward()
    optimizer.step()

# 计算准确率、误判率和召回率
inputs = torch.from_numpy(X).float()
labels = torch.from_numpy(y).float().view(-1, 1)
outputs = model(inputs)
predicted = (outputs > 0.5).float()
tn, fp, fn, tp = confusion_matrix(labels.numpy(), predicted.numpy()).ravel()
accuracy = (tp + tn) / (tp + tn + fp + fn)
misclassification_rate = (fp + fn) / (tp + tn + fp + fn)
recall = tp / (tp + fn)

print('Accuracy:', accuracy)
print('Misclassification rate:', misclassification_rate)
print('Recall:', recall)

在这个示例中,我们首先导入torchnumpysklearn.metrics模块。然后,我们定义了一个名为BinaryClassifier的类,该类继承自torch.nn.Module类,并包含一个线性层。我们使用torch.sigmoid函数将输出转换为概率。接下来,我们使用numpy.random模块生成一些随机数据,并使用torch.optim.SGD类定义优化器。在训练过程中,我们使用torch.from_numpy函数将NumPy数组转换为PyTorch张量,并使用torch.nn.BCELoss类定义损失函数。在训练完成后,我们使用模型对所有数据进行预测,并使用sklearn.metrics.confusion_matrix函数计算混淆矩阵。最后,我们使用混淆矩阵计算准确率、误判率和召回率。

示例2:计算多分类模型的准确率、误判率和召回率

在这个示例中,我们将使用PyTorch计算一个多分类模型的准确率、误判率和召回率。具体来说,我们将使用一个名为MultiClassifier的类来定义多分类模型,并使用sklearn模块生成一些随机数据。下面是一个示例:

import torch
import numpy as np
from sklearn.metrics import confusion_matrix

class MultiClassifier(torch.nn.Module):
    def __init__(self):
        super(MultiClassifier, self).__init__()
        self.linear = torch.nn.Linear(2, 3)

    def forward(self, x):
        x = self.linear(x)
        return torch.softmax(x, dim=1)

# 生成随机数据
np.random.seed(0)
X = np.random.randn(100, 2)
y = np.random.randint(0, 3, 100)

# 定义模型和优化器
model = MultiClassifier()
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 训练模型
for epoch in range(100):
    inputs = torch.from_numpy(X).float()
    labels = torch.from_numpy(y).long()
    optimizer.zero_grad()
    outputs = model(inputs)
    loss = criterion(outputs, labels)
    loss.backward()
    optimizer.step()

# 计算准确率、误判率和召回率
inputs = torch.from_numpy(X).float()
labels = torch.from_numpy(y).long()
outputs = model(inputs)
_, predicted = torch.max(outputs, 1)
tn, fp, fn, tp = confusion_matrix(labels.numpy(), predicted.numpy()).ravel()
accuracy = (tp + tn) / (tp + tn + fp + fn)
misclassification_rate = (fp + fn) / (tp + tn + fp + fn)
recall = tp / (tp + fn)

print('Accuracy:', accuracy)
print('Misclassification rate:', misclassification_rate)
print('Recall:', recall)

在这个示例中,我们首先定义了一个名为MultiClassifier的类,该类继承自torch.nn.Module类,并包含一个线性层。我们使用torch.softmax函数将输出转换为概率。接下来,我们使用numpy.random模块生成一些随机数据,并使用torch.optim.SGD类定义优化器。在训练过程中,我们使用torch.from_numpy函数将NumPy数组转换为PyTorch张量,并使用torch.nn.CrossEntropyLoss类定义损失函数。在训练完成后,我们使用模型对所有数据进行预测,并使用torch.max函数找到每个样本的最大输出。然后,我们使用sklearn.metrics.confusion_matrix函数计算混淆矩阵。最后,我们使用混淆矩阵计算准确率、误判率和召回率。

总之,使用PyTorch计算准确率、误判率和召回率非常简单。我们可以使用混淆矩阵来计算这些指标,并使用sklearn.metrics.confusion_matrix函数计算混淆矩阵。在计算准确率、误判率和召回率之前,我们需要使用torch.max函数找到每个样本的最大输出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pytorch 计算误判率,计算准确率,计算召回率的例子 - Python技术站

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

相关文章

  • pytorch模型的保存和加载、checkpoint操作

    PyTorch是一个非常流行的深度学习框架,它提供了丰富的工具和库来帮助我们进行深度学习任务。在本文中,我们将介绍如何保存和加载PyTorch模型,以及如何使用checkpoint操作来保存和恢复模型的状态。 PyTorch模型的保存和加载 在PyTorch中,我们可以使用torch.save和torch.load函数来保存和加载PyTorch模型。torc…

    PyTorch 2023年5月16日
    00
  • pytorch学习:准备自己的图片数据

    图片数据一般有两种情况: 1、所有图片放在一个文件夹内,另外有一个txt文件显示标签。 2、不同类别的图片放在不同的文件夹内,文件夹就是图片的类别。 针对这两种不同的情况,数据集的准备也不相同,第一种情况可以自定义一个Dataset,第二种情况直接调用torchvision.datasets.ImageFolder来处理。下面分别进行说明: 一、所有图片放在…

    2023年4月8日
    00
  • PyTorch在Windows环境搭建的方法步骤

    PyTorch在Windows环境搭建的方法步骤 在本文中,我们将介绍如何在Windows环境下搭建PyTorch。我们将提供两个示例,一个是使用Anaconda安装PyTorch,另一个是使用pip安装PyTorch。 示例1:使用Anaconda安装PyTorch 以下是使用Anaconda安装PyTorch的步骤: 下载并安装Anaconda。可以从A…

    PyTorch 2023年5月16日
    00
  • pytorch使用gpu加速的方法

    一、默认gpu加速 一般来说我们最常见到的用法是这样的: device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”) 或者说: if torch.cuda.is_available(): device = torch.device(“cuda”) else: device = t…

    PyTorch 2023年4月8日
    00
  • Pytorch从一个输入目录中加载所有的PNG图像,并将它们存储在张量中

    1 import os 2 import imageio 3 from imageio import imread 4 import torch 5 6 # batch_size = 3 7 # batch = torch.zeros(batch_size, 3, 256, 256, dtype=torch.uint8) 8 # batch.shape #t…

    PyTorch 2023年4月7日
    00
  • pytorch人工智能之torch.gather算子用法示例

    PyTorch人工智能之torch.gather算子用法示例 torch.gather是PyTorch中的一个重要算子,用于在指定维度上收集输入张量中指定索引处的值。在本文中,我们将介绍torch.gather的用法,并提供两个示例说明。 torch.gather的用法 torch.gather的语法如下: torch.gather(input, dim, …

    PyTorch 2023年5月15日
    00
  • [转] pytorch指定GPU

    查过好几次这个命令,总是忘,转一篇mark一下吧 转自:http://www.cnblogs.com/darkknightzh/p/6836568.html PyTorch默认使用从0开始的GPU,如果GPU0正在运行程序,需要指定其他GPU。 有如下两种方法来指定需要使用的GPU。 1. 类似tensorflow指定GPU的方式,使用CUDA_VISIBL…

    PyTorch 2023年4月8日
    00
  • pytorch+lstm实现的pos示例

    在自然语言处理中,词性标注(Part-of-Speech Tagging,POS)是一个重要的任务。它的目标是为给定的文本中的每个单词标注其词性,例如名词、动词、形容词等。在PyTorch中,我们可以使用LSTM模型来实现POS任务。 以下是两个示例代码,展示了如何使用PyTorch和LSTM模型实现POS任务: 示例1:使用PyTorch和LSTM模型实现…

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