用PyTorch轻松实现二分类:逻辑回归入门

这篇具有很好参考价值的文章主要介绍了用PyTorch轻松实现二分类:逻辑回归入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临,让我们一起踏上这个知识之旅!
用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习

🥦引言

当谈到机器学习和深度学习时,逻辑回归是一个非常重要的算法,它通常用于二分类问题。在这篇博客中,我们将使用PyTorch来实现逻辑回归。PyTorch是一个流行的深度学习框架,它提供了强大的工具来构建和训练神经网络,适用于各种机器学习任务。

在机器学习中已经使用了sklearn库介绍过逻辑回归,这里重点使用pytorch这个深度学习框架

🥦什么是逻辑回归?

我们首先来回顾一下什么是逻辑回归?

逻辑回归是一种用于二分类问题的监督学习算法。它的主要思想是通过一个S形曲线(通常是Sigmoid函数)将输入特征映射到0和1之间的概率值,然后根据这些概率值进行分类决策。在逻辑回归中,我们使用一个线性模型和一个激活函数来实现这个映射。

🥦分类问题

这里以MINIST Dataset手写数字集为例
用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习

这个数据集中包含了6w个训练集1w个测试集,类别10个
这里我们不再向之前线性回归那样,根据属于判断具体的数值大小;而是根据输入的值判断从0-9每个数字的概率大小记为p(0)、p(1)…而且十个概率值和为1,我们的目标就是根据输入得到这十个分类对于输入的每一个的概率值,哪个大就是我们需要的。

这里介绍一下与torch相关联的库—torchvision
torchvision:

  • “torchvision” 是一个PyTorch的附加库,专门用于处理图像和视觉任务。
    它包含了一系列用于数据加载、数据增强、计算机视觉任务(如图像分类、目标检测等)的工具和数据集。
  • “torchvision” 提供了许多预训练的视觉模型(例如,ResNet、VGG、AlexNet等),可以用于迁移学习或作为基准模型。
    此外,它还包括了用于图像预处理、转换和可视化的函数。

上图已经清楚的显示了,这个库包含了一些自带的数据集,但是并不是我们安装完这个库就有了,而且需要进行调用的,类似在线下载,root指定下载的路径,train表示你需要训练集还是测试集,通常情况下就是两个一个训练,一个测试,download就是判断你下没下载,下载了就是摆设,没下载就给你下载了

我们再来看一个数据集(CIFAR-10)
用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习
包含了5w训练样本,1w测试样本,10类。调用方式与上一个类似。

接下来我们从一张图更加直观的查看分类和回归
用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习

左边的是回归,右边的是分类


用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习

过去我们使用回归例如 y ^ \hat{y} y^=wx+b∈R,这是属于一个实数的;但是在分类问题, y ^ \hat{y} y^∈[0,1]
这说明我们需要寻找一个函数,将原本实数的值经过函数的映射转化为[0,1]之间。这里我们引入Logistic函数,使用极限很清楚的得出x趋向于正无穷的时候函数为1,x趋向于负无穷的时候,函数为0,x=0的时候,函数为0.5,当我们计算的时候将 y ^ \hat{y} y^带入这样就会出现一个0到1的概率了。

下图展示一些其他的Sigmoid函数
用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习

🥦交叉熵

过去我们所使用的损失函数普遍都是MSE,这里引入一个新的损失函数—交叉熵

==交叉熵(Cross-Entropy)==是一种用于衡量两个概率分布之间差异的数学方法,常用于机器学习和深度学习中,特别是在分类问题中。它是一个非常重要的损失函数,用于衡量模型的预测与真实标签之间的差异,从而帮助优化模型参数。

在交叉熵的上下文中,通常有两个概率分布:

  • 真实分布(True Distribution): 这是指问题的实际概率分布,表示样本的真实标签分布。通常用 p ( x ) p(x) p(x)表示,其中 x x x表示样本或类别。

  • 预测分布(Predicted Distribution): 这是指模型的预测概率分布,表示模型对每个类别的预测概率。通常用 q ( x ) q(x) q(x)表示,其中 x x x表示样本或类别。

交叉熵的一般定义如下:
用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习其中, H ( p , q ) H(p, q) H(p,q) 表示真实分布 p p p 和预测分布 q q q 之间的交叉熵。

交叉熵的主要特点和用途包括:

  • 度量差异性: 交叉熵度量了真实分布和预测分布之间的差异。当两个分布相似时,交叉熵较小;当它们之间的差异增大时,交叉熵增大。

  • 损失函数: 在机器学习中,交叉熵通常用作损失函数,用于衡量模型的预测与真实标签之间的差异。在分类任务中,通常使用交叉熵作为模型的损失函数,帮助模型优化参数以提高分类性能。

  • 反向传播: 交叉熵在训练神经网络时非常有用。通过计算交叉熵的梯度,可以使用反向传播算法来调整神经网络的权重,从而使模型的预测更接近真实标签。

在分类问题中,常见的交叉熵损失函数包括二元交叉熵(Binary Cross-Entropy)和多元交叉熵(Categorical Cross-Entropy)。二元交叉熵用于二分类问题,多元交叉熵用于多类别分类问题。

刘二大人的PPT中也介绍了
用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习
右边的表格中每组y与 y ^ \hat{y} y^对应的BCE,BCE越高说明越可能,最后将其求均值

🥦代码实现

用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习

根据上图可知,线性回归和逻辑回归的流程与函数只区别于Sigmoid函数
用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习
这里就是BCEloss的调用,里面的参数代表求不求均值

完整代码如下

import torch.nn.functional as F
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[0], [0], [1]])
class LogisticRegressionModel(torch.nn.Module):
	def __init__(self):
		super(LogisticRegressionModel, self).__init__() 
		self.linear = torch.nn.Linear(1, 1)
	def forward(self, x):
		y_pred = F.sigmoid(self.linear(x))
		return y_pred
model = LogisticRegressionModel() 
criterion = torch.nn.BCELoss(size_average=False)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)  
for epoch in range(1000):
	y_pred = model(x_data)
	loss = criterion(y_pred, y_data)
	print(epoch, loss.item())
	optimizer.zero_grad() 
	loss.backward()
	optimizer.step()

最后绘制一下

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 200)
x_t = torch.Tensor(x).view((200, 1))  # 相当于reshape
y_t = model(x_t)
y = y_t.data.numpy()
plt.plot(x, y)
plt.plot([0, 10], [0.5, 0.5], c='r') 
plt.xlabel('Hours')
plt.ylabel('Probability of Pass')
plt.grid()
plt.show()

运行结果如下
用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习

🥦总结

这就是使用PyTorch实现逻辑回归的基本步骤。逻辑回归是一个简单但非常有用的算法,可用于各种分类问题。希望这篇博客能帮助你开始使用PyTorch构建自己的逻辑回归模型。如果你想进一步扩展你的知识,可以尝试在更大的数据集上训练模型或探索其他深度学习算法。祝你好运!

用PyTorch轻松实现二分类:逻辑回归入门,Pytorch,pytorch,分类,逻辑回归,python,人工智能,机器学习

挑战与创造都是很痛苦的,但是很充实。文章来源地址https://www.toymoban.com/news/detail-715486.html

到了这里,关于用PyTorch轻松实现二分类:逻辑回归入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习7:pytorch的逻辑回归

            逻辑回归模型是处理分类问题的最常见机器学习模型之一。 二项式逻辑 回归只是逻辑回归模型的

    2024年02月07日
    浏览(29)
  • pytorch学习——第二个模型(逻辑回归)

    参考该博客系统学习Pytorch笔记二:Pytorch的动态图、自动求导及逻辑回归 c l a s s = { 0 0.5 y 1 0.5 ≤ y class=left{ begin{array}{rcl} 0 {0.5 y}\\\\ 1 {0.5 le y}\\\\ end{array} right. c l a ss = { 0 1 ​ ​ 0.5 y 0.5 ≤ y ​ 根据这个y的取值进行分类的,当取值小于0.5, 就判别为类别0, 大于0.5, 就判别

    2024年02月16日
    浏览(29)
  • pytorch深度学习逻辑回归 logistic regression

    结果  

    2024年02月16日
    浏览(48)
  • python pytorch 超详细线性回归原理解析加代码实现-小白入门级

    答应老师做的一个系列教程,也是头一次花这吗大精力去写一篇基础的文档,里面虽然有不少的公式,但只要能顺着看下来会发现都是非常基础的公式都是特别简单的。 学习目标: 了解深度学学习的结构基本过程和原理 模型(函数): f ( x ) = w x + b f(x)=wx+b f ( x ) = w x + b 数据集

    2024年02月02日
    浏览(31)
  • 深度学习 -- pytorch 计算图与动态图机制 autograd与逻辑回归模型

    pytorch中的动态图机制是pytorch这门框架的优势所在,阅读本篇博客可以使我们对动态图机制以及静态图机制有更直观的理解,同时在博客的后半部分有关于逻辑回归的知识点,并且使用pytorch中张量以及张量的自动求导进行构建逻辑回归模型。 计算图是用来描述运算的有向无环

    2024年02月01日
    浏览(32)
  • 33- PyTorch实现分类和线性回归 (PyTorch系列) (深度学习)

    知识要点  pytorch 最常见的创建模型 的方式, 子类 读取数据: data = pd.read_csv (\\\'./dataset/credit-a.csv\\\', header=None) 数据转换为tensor: X = torch .from_numpy(X.values).type(torch.FloatTensor) 创建简单模型: 定义损失函数: loss_fn = nn.BCELoss () 定义优化器: opt = torch.optim.SGD (model.parameters(), lr=0.00001) 把梯度

    2024年02月06日
    浏览(39)
  • 用Pytorch实现线性回归模型

    前面已经学习过线性模型相关的内容,实现线性模型的过程并没有使用到Pytorch。 这节课主要是利用Pytorch实现线性模型。 学习器训练: 确定模型(函数) 定义损失函数 优化器优化(SGD) 之前用过Pytorch的Tensor进行Forward、Backward计算。 现在利用Pytorch框架来实现。 准备数据集

    2024年01月19日
    浏览(37)
  • 深度学习之pytorch实现线性回归

    作用j进行线性变换 Linear(1, 1) : 表示一维输入,一维输出 优化器对象 9961 tensor(4.0927e-12, grad_fn=) 9962 tensor(4.0927e-12, grad_fn=) 9963 tensor(4.0927e-12, grad_fn=) 9964 tensor(4.0927e-12, grad_fn=) 9965 tensor(4.0927e-12, grad_fn=) 9966 tensor(4.0927e-12, grad_fn=) 9967 tensor(4.0927e-12, grad_fn=) 9968 tensor(4.0927e-12, grad_fn

    2024年02月19日
    浏览(28)
  • 深度学习之用PyTorch实现线性回归

    1.1 epoch = 100时 1.2 epoch = 1000时   2.1 Adam优化器    2.2 Adamax优化器  3.1 lr = 0.05  3.2 lr = 0.1(loss函数结果发散) 1.1 问题  1.2 解决办法 代码中model.parameters()函数保存的是Weights和Bais参数的值。但是对于其他网络(非线性)来说这个函数可以用吗,里面也是保存的w和b吗?

    2024年02月14日
    浏览(35)
  • pytorch手动实现一个简单的线性回归

    使用y = 5x + 20来构造数据 准备数据 计算预测值 计算损失 把参数的梯度置为0 进行反向传播 更新参数

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包