pytorch深度学习-06逻辑斯蒂回归(快速入门)(代码片段)

璞玉牧之. 璞玉牧之.     2023-03-03     462

关键词:

“梦想成真之前,看上去总是那么遥不可及”

目录


1.Logistic Tutorial (逻辑斯蒂回归)

虽然叫回归,但用处是分类

1.1 Why use Logistic (为什么用逻辑斯蒂回归)

  • 从上图中可以看出,此手写数据集一共有10个分类,即y属于0,1,2,3,4,5,6,7,8,9,分类的目的就是要估算y属于 0到9的哪一类。
  • 当用线性回归模型做分类问题时,如果输入的是第0个类别,就要让y的输出值为0,如果输入的是第1个类别,就要让y的输出值为1,以此类推。
  • 然而,这种思路并不好,因为在0-9这9个分类中,7和8这两个类是挨着的,而7和9这两个类别中间隔着一个类别8,按理来说应该是7和8的输出值更接近,但实际上,从图中画圈的两个数 可以看出,从笔画的相似性上看,应该是7和9更接近。
  • 所以,在分类问题中,不能用线性回归模型去做,因为这些类别中并没有实数空间中数值大小的概念(即不会认为0比9小)。
  • 分类问题的核心是需要根据输入值x,算出y输出为0的概率P(0)、y输出为1的概率P(1)…一直算到y输出为9的概率P(9)。10个概率值相加等于1,通过比较算出的10个概率值的大小,找出最大概率,就可以判断输入值x属于哪一类。

  • download:是否从网上下载数据集,若第一次使用,之前未下载过,就标为True。
  • train:是否为训练集

1.2 Regression VS Classification (比较回归与分类)

二分类问题需计算y_hay=1和y_hay=0的概率,但实际上只计算一个值即可。二分类问题只输出1个实数,这个实数表示其中某一个分类的概率,通常y_hat=1的概率为通过考试的概率,若输出值为0.8,就表示通过考试的概率是0.8,判定为通过考试。若输出值范围在0.4-0.6,则会输出不确定。

1.3 How to map:R->[0,1] (怎样将实数集映射到区间 [0,1])

回归中y_hat的值属于实数集,分类中y_hat的值属于区间 [0,1],所在分类时,要找到一个函数,把线性模型的输出值由实数空间映射到区间 [0,1],要找的函数就是Logistic函数

ps:饱和函数:输入达到一定的值以后,输出就不再变化,达到饱和。Logistic是饱和函数

把线性模型输出的y_hat作为x输入到Logistic函数中,得到的结果就是通过考试的概率。

2.Sigmoid functions (其他Sigmoid函数)

Sigmoid函数需要满足的条件:

  1. 是饱和函数
  2. 函数值有极限
  3. 是单调增函数

3.Logistic Regression Model (逻辑斯蒂回归模型)

σ \\sigma σ代表Logistic函数

Logistic函数重要性质:能保证输出值在0 ~ 1之间

有是希望函数的输出值在-1 ~ 1之间(均值为0),这时就会用到其他Sigmoid函数。

4.Loss function for Binary Classification (二分类的损失函数)

Loss function for Binary Classification 简称::BCE Loss

  • Loss Function for Linear Regression是计算数轴上y和y_hat之间的距离,希望loss距离最小化

  • Loss function for Binary Classification输出的是分布,需要比较2个分布之间的差异,希望差异越小越好。y_hat表示分类为1时的概率,1 - y_hat表示分类为0时的概率。若y=0,y = P(class=1) = 0;1 - y = P(class=0) = 1

公式分析:

5.Implementation of Logistic Regression (线性单元和Logistic单元代码比较)


BCE:交叉熵 (cross-entropy)

6.总结-完整代码

import numpy as np
import matplotlib.pyplot as plt
import torch
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()

x = np.linspace(0, 10, 200)
x_t = torch.Tensor(x).view((200, 1))
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()

7.结果截图



本文参考:《PyTorch深度学习实践》


At the end of my article

我是璞玉牧之,持续输出优质文章,希望和你一起学习进步!!!原创不易,如果本文对你有帮助,可以 点赞+收藏+评论 支持一下哦!我们下期见~~

怎么快速入门深度学习

...理论知识,就需要学习一个深度学习的框架:Tensorflow、Pytorch。最近几年pytorch用的人越来越多了。图像识别的话,还需要学习opencv。参考技术A学习深度学习的基础知识:学习深度学习的基本概念,包括神经网络、卷积神经网络... 查看详情

系统入门深度学习,直击算法工程师

...数(09:18)2-5逻辑回归示例(12:17)2-6单层、多层感知机(08:51)2-7pytorch构建单多层感知机(19:53)2-8基于多层DNN假钞识别(01:43)2-9数据集及特征分析(05:49)2-10项目构建和模型训练 查看详情

pytorch深度学习60分钟快速入门part1:pytorch是什么?

 0x00PyTorch是什么?PyTorch是一个基于Python的科学计算工具包,它主要面向两种场景:用于替代NumPy,可以使用GPU的计算力一种深度学习研究平台,可以提供最大的灵活性和速度0x01开始学习1、TensorsTensors(张量)类似于numpy的ndar... 查看详情

pytorch深度学习60分钟快速入门part0:系列介绍

 说明:本系列教程翻译自PyTorch官方教程《DeepLearningwithPyTorch:A60MinuteBlitz》 教程目标在高层次上理解PyTorch的Tensor库和神经网络训练一个小型的神经网络来分类图像前提条件假设读者熟悉基础的NumPy库确保已经安装了torch和t... 查看详情

深度学习入门softmax回归模型

...师推荐了一本书用来入门:《动手学深度学习(PyTorch版)》在此处记录一下学习内容以及学习总结,文章以原作者书 查看详情

李航统计学习方法chapter6逻辑斯蒂回归

第6章逻辑斯蒂回归和最大熵模型逻辑斯谛回归(LR)是经典的分类方法1.逻辑斯谛回归模型是由以下条件概率分布表示的分类模型。逻辑斯谛回归模型可以用于二类或多类分类。P(Y=k∣x)=exp⁡(wk⋅x)1+∑k=1K−1exp⁡(wk... 查看详情

三天爆肝快速入门机器学习:线性回归逻辑回归岭回归第三天(代码片段)

三天爆肝快速入门机器学习【第三天】线性回归过拟合和欠拟合岭回归逻辑回归前言:这个系列终于写完了,只写了三篇,但是基础知识基本都写了,但是阅读量都不高,可能也是自己初次写这种系列的没什么经验,排版内容都有很大改... 查看详情

深度学习pytorch四步阅读法

Pytorch框架快速入门前言找数据定义、找model定义、(找损失函数、优化器定义),主循环代码逻辑Pytorch框架编写深度学习模型,无非就是按照四步,从这四步出发去剖析和书写代码,可以比较好的提高我们的效率。基本思想和步骤... 查看详情

深度学习理论与实战pytorch实现

课程目录:01.预备内容(入门)02.Python基础(入门)03.PyTorch基础(入门)04.神经网络(进阶)05.卷积神经网络(进阶)06.循环神经网络(进阶)07.生成对抗网络GAN(进阶)08.强化学习(进阶)09.毕业项目 下载地址:深度学习理... 查看详情

pytorch深度学习60分钟快速入门part3:神经网络

 神经网络可以通过使用torch.nn包来构建。既然你已经了解了autograd,而nn依赖于autograd来定义模型并对其求微分。一个nn.Module包含多个网络层,以及一个返回输出的方法forward(input)。例如,查看下图中的对数字图片分类的网络... 查看详情

机器学习入门系列06,logisticregression逻辑回归

Gitbook整理地址:https://yoferzhang.gitbooks.io/machinelearningstudy/content/20170409ML06LogisticRegression.htmlStep1逻辑回归的函数集上一篇讲到分类问题的解决方法,推导出函数集的形式为:将函数集可视化:图中z写错了,应该... 查看详情

logisticregression逻辑斯蒂回归

​​WelcomeToMyBlog​​LogisticRegressionlogistic回归是统计学习中的经典分类方法,他属于对数线性模型,logistic回归来源于logistic分布,先从logistic分布说起Logisticdistribution设X是连续随机变量,X服从logistic分布,其分布函数和概率密度函数如... 查看详情

pytorch深度学习60分钟快速入门part2:autograd自动化微分

 在PyTorch中,集中于所有神经网络的是autograd包。首先,我们简要地看一下此工具包,然后我们将训练第一个神经网络。autograd包为张量的所有操作提供了自动微分。它是一个运行式定义的框架,这意味着你的后向传播是由你... 查看详情

pytorch深度学习-01概述(快速入门)

目录Overview1.Goalofthistutorial2.HumanIntelligence3.Machinelearning4.Howtodeveloplearningsystem:5.Newchange6.neuralnetworks(神经网络)6.1反向传播(BackPropagation、BP算法)Overview1.GoalofthistutorialTarget:understandthebasicofneuralnetwork/deeplearningRequirements:Algebra+Probability... 查看详情

梯度下降法解逻辑斯蒂回归

...法解逻辑斯蒂回归  本文是AndrewNg在Coursera的机器学习课程的笔记。Logistic回归属于分类模型。回顾线性回归,输出的是连续的实数,而Logistic回归输出的是[0,1]区间的概率值,通过概率值来判断因变量应该是1还是0。因此,... 查看详情

深度学习之30分钟快速入门pytorch(附学习资源推荐)(代码片段)

目录1、Pytorch简介1.0如何使用本教程1.1PyTorch由来1.2Torch简介1.3重新认识PyTorch1.4PyTorch和Tensorflow的对比1.5总结2、Pytorch环境搭建2.1安装Pytorch2.2配置JupyterNotebook2.3测试3、张量4、自动求导5、神经网络6、用cifar10训练一个分类器7、数据... 查看详情

pytorch入门01

1.为什么学习pytorch日益增长的发展速度和深度学习的需要 在谷歌搜索频次和期刊论文引用频次上pytorch也是一直增长,TF比较稳或者说有点下降,尤其在学术界pytorch已经成为主流。2.学哪类知识pytorch:深度学习框架01.数据模... 查看详情

用二项逻辑斯蒂回归解决二分类问题(代码片段)

逻辑斯蒂回归:逻辑斯蒂回归是统计学习中的经典分类方法,属于对数线性模型。logistic回归的因变量可以是二分类的,也可以是多分类的基本原理logistic分布折X是连续的随机变量,X服从logistic分布是指X具有下列分布函数和密度... 查看详情