Pytorch深度学习笔记(七)逻辑斯蒂回归
目录
1. logistic(逻辑斯蒂)函数
2.二分类任务(binary classification)损失函数
3.二分类任务(binary classification)最小批量损失函数
4.逻辑斯蒂回归代码实现
附:pytorch提供的数据集
推荐课程:06.逻辑斯蒂回归_哔哩哔哩_bilibili
回归是对连续变量预测。
分类是对离散变量预测。通过比较分类的概率来判断预测的结果。
回归&分类
以学生学习为例,回归任务:学习时间预测学习成绩,分类任务:学习时间预测通过考试的概率,两个类别标签,通过与不通过,这是一个二分类任务。
逻辑斯蒂回归是一种分类任务。
1. logistic(逻辑斯蒂)函数
这里的x更换为。
logistic(逻辑斯蒂)函数:用于线性模型将输出值由实数空间映射到[0,1]之间,以此进行分类。与线性回归模型相比logistic(逻辑斯蒂)回归模型,多增加了一个映射函数。logistics函数使用符号表示。
映射:
注:只要满足饱和函数的规定,都属于sigmoid函数,如logistic(逻辑斯蒂)函数。所以logistic回归有时也叫sigmoid。
2.二分类任务(binary classification)损失函数
也称为BCELoss()函数,二分类交叉熵(cross entorpy)
在二分类任务中,为class=1的概率, 1-为class=0的概率。为交叉熵表示log前后两个分布概率的差异大小。如果y=0表示class=0的概率为1,class=1的概率为0。如果y=1表示class=1的概率为1,class=0的概率为0。
当y=1时,loss=-log,表示值越大越接近class=1的概率为1的真实分布概率,损失值越小。当y=0时, loss=-log(1 - ), 表示值越小,class=0的概率越大,越接近class=0的概率为1的真实分布概率,损失值越小。可见下图。
3.二分类任务(binary classification)最小批量损失函数
求损失量均值。
4.逻辑斯蒂回归代码实现
1.数据准备
2.设计模型
3.构造损失函数和优化器
4.训练周期(前馈—>反馈—>更新)
逻辑斯蒂回归完整代码:
import torch
import torch.nn.functional as F#…1.准备数据………………………………………………………………………………………………………………………………………#
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
# 二分类
y_data = torch.Tensor([[0], [0], [1]])#…2.设计模型………………………………………………………………………………………………………………………………………#
# 继承torch.nn.Module,定义自己的计算模块,neural network
class LogisticRegressionModel(torch.nn.Module):# 构造函数def __init__(self):# 调用父类构造super(LogisticRegressionModel, self).__init__()# 定义输入样本和输出样本的维度self.linear = torch.nn.Linear(1, 1)# 前馈函数def forward(self, x):# 返回x线性计算后的预测值# sigmoid()作映射变化y_pred = F.sigmoid(self.linear(x))return y_pred#……3.构造损失函数和优化器……………………………………………………………………………………………………………#
# 实例化自定义模型,返回做logistic变化(也叫sigmoid)的预测值
model = LogisticRegressionModel()
# 实例化损失函数,返回损失值
criterion = torch.nn.BCELoss(size_average=False)
# 实例化优化器,优化权重w
# model.parameters(),取出模型中的参数
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)#……4.训练周期………………………………………………………………………………………………………………………………………#
for epoch in range(1000):# 获得预测值y_pred = model(x_data)# 获得损失值loss = criterion(y_pred, y_data)# 不会产生计算图,因为__str()__print(epoch, loss.item())# 梯度归零optimizer.zero_grad()# 反向传播loss.backward()# 更新权重woptimizer.step()
# 打印权重和偏值
print('w = ', model.linear.weight.item())
print('b = ', model.linear.bias.item())#……5.绘图………………………………………………………………………………………………………………………………………#
#用于在大型、多维数组上执行数值运算
import numpy as np
import matplotlib.pyplot as plt# 定义均匀间隔创建数值序列,指定间隔起始点、终止端,指定分隔值总数
x = np.linspace(0, 10, 200)
# 重新调整维度为200*1
x_t = torch.Tensor(x).view((200, 1))
y_t = model(x_t)
# 将tensor转化为numpy类型
y = y_t.data.numpy()
# 图线1,x,y 轴上的数值
plt.plot(x, y)
# 图线2,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的免费数据集由两个上层的API提供,分别是torchvision和torchtext。
torchvision提供了对照片数据处理相关的API和数据,数据所在位置:torchvision.datasets,比如torchvision.datasets.MNIST(手写数字照片数据),torchvision.datasets.cifar(十类彩色图像数据)。
torchtext提供了对文本数据处理相关的API和数据,数据所在位置:torchtext.datasets,比如torchtext.datasets.IMDB(电影评论文本数据)。
import torchvision
# 训练集
train_set = torchvision.datasets.MNIST(root="../dataset/mnist", train=True, download=True)
# 测试集
test_set = torchvision.datasets.MNIST(root="../dataset/mnist", train=False, download=True)
- root(string)– 数据集的根目录,其中存放
processed/training.pt
和processed/test.pt
文件。- train(bool, 可选)– 如果设置为True,从
training.pt
创建数据集,否则从test.pt
创建。- download(bool, 可选)– 如果设置为True, 从互联网下载数据并放到root文件夹下。如果root目录下已经存在数据,不会再次下载。
- transform(可被调用 , 可选)– 一种函数或变换,输入PIL图片,返回变换之后的数据。如:
transforms.RandomCrop
。- target_transform (可被调用 , 可选)– 一种函数或变换,输入目标,进行变换。
torchvision.datasets-PyTorch 1.0 中文文档 & 教程
Pytorch深度学习笔记(七)逻辑斯蒂回归相关推荐
- 刘二大人 PyTorch深度学习实践 笔记 P6 逻辑斯蒂回归
刘二大人 PyTorch深度学习实践 笔记 P6 逻辑斯蒂回归 P6 逻辑斯蒂回归 1.torchversion 提供的数据集 2.基本概念 3.代码实现 P6 逻辑斯蒂回归 1.torchversi ...
- 【笔记】逻辑斯蒂回归
一.逻辑斯蒂回归概述 (1)逻辑斯蒂回归的目的:分类. 逻辑斯蒂回归常常解决分类问题,特别是二分类问题. (2)逻辑斯蒂回归的过程:回归. 计算结果是0~1之间的连续值,代表发生的可能性(类概率). ...
- 逻辑斯蒂回归 逻辑回归_逻辑回归简介
逻辑斯蒂回归 逻辑回归 Logistic regression is a classification algorithm, which is pretty popular in some commu ...
- PyTorch深度学习实践(b站刘二大人)P6讲 逻辑斯蒂回归 Logistic Regression
1.分类任务的数据集 ① The MNIST Dataset:handwritten digits Training set: 60,000 examples, Test set: 10,000 ex ...
- 《PyTorch深度学习实践》06 逻辑斯蒂回归 代码
视频:06.逻辑斯蒂回归_哔哩哔哩_bilibili 参考文章:pytorch 深度学习实践 第6讲 逻辑斯蒂回归_会游泳的小雁的博客-CSDN博客 网络模型的基本框架 1步骤: 1.Prepare ...
- 逻辑斯蒂回归_逻辑斯蒂回归详细解析 | 统计学习方法学习笔记 | 数据分析 | 机器学习...
本文包括: 重要概念 逻辑斯蒂回归和线性回归 二项逻辑斯谛回归模型 逻辑斯蒂回顾与几率 模型参数估计 多项逻辑斯谛回归 其它有关数据分析,机器学习的文章及社群 1.重要概念: 在正式介绍逻辑斯蒂回归模 ...
- 学习笔记——逻辑斯蒂回归与最大熵模型
逻辑斯蒂回归(logistic regression)是统计学习中的经典分类方法.最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型(maximum entropy).都属于对数线性模型 ...
- 统计学习方法读书笔记(六)-逻辑斯蒂回归与最大熵模型(迭代尺度法(IIS))
全部笔记的汇总贴:统计学习方法读书笔记汇总贴 逻辑斯谛回归 (logistic regression )是统计学习中的经典分类方法.最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型(m ...
- 机器学习笔记之(3)——Logistic回归(逻辑斯蒂回归)
本博文为逻辑斯特回归的学习笔记.由于仅仅是学习笔记,水平有限,还望广大读者朋友多多赐教. 假设现在有一些数据点,我们用一条直线对这些点进行拟合(该直线称为最佳拟合直线),这个拟合的过程就称为回归. 利 ...
最新文章
- linux lab命令,Linux lab 命令
- actor multithreading concurrency
- docker-compose up volumes 调用外部文件,权限问题 cannot open directory xxxxx .: Permission denied
- 数字转换成字符串进行连接
- Android Canvas绘制带箭头的直线
- 阿里发布《2015-2016中国云栖创新报告》,北上杭深广排名前5
- html有几个文件夹,关于webpack打包问题,怎么打包成多个文件夹,每个文件夹下有相应的html,js和css?...
- 在$x_0$处全导数可逆的函数$f:\mathbf{R^n}\to\mathbf{R^n}$的一个性质
- Trick(十三)—— 数学与函数
- 目标检测的数据增强 -- 代码实现
- IOS测试版全版本固件下载集合
- 操作系统课后答案第五章
- Matlab条件语句
- label smoothingregularization (LSR)
- 7种常见分布的数学期望及其证明
- Linux五个最牛视频编辑软件
- Java鸡兔同笼问题
- Qt +百度地图+获取返回位置点
- 【Python】从爬虫开始吧——爬取妹子图整站
- 西门子博途系列学习笔记SCL(一)