使用线性回归模型逼近目标模型 | PyTorch 深度学习实战

前一篇文章,计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战

本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started

使用线性回归模型逼近目标模型

  • 什么是回归
  • 什么是线性回归
  • 使用 PyTorch 实现线性回归模型
    • 代码
    • 执行结果

什么是回归

在统计学中,回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。

简单说,就是使用统计学手段,分析变量之间的规律。发现规律后,可以根据给定的数据猜测特征空间的因变量1的数据。

在这里插入图片描述
参考文章:https://zhuanlan.zhihu.com/p/669597409

什么是线性回归

用一条直线去逼近数据的分布,参考定义:

A linear regression is a straight line that describes how the values of a response variable y y y change as the predictor variable x x x changes.

线性回归在实际中,可以包含多元的情况,比如:

z = w 1 x + w 2 y z = w_1 x + w_2 y z=w1x+w2y

更多线性回归介绍,参考文章。

使用 PyTorch 实现线性回归模型

实现量化投资:现在假如我们观测到了某支股票的数据 v v v,并且这支股票和石油的价格 x x x、黄金的价格 y y y和原煤的价格 z z z 有关联。因此,我们取得了不同时刻的 x x x y y y z z z 和对应的股票价格 v v v,现在,依据这些数据,建立一个方程式:

v = a x + b y + c z + d v = ax + by + cz + d v=ax+by+cz+d

此时,依赖历史采集的数据,我们来求 a,b,c,d 的值。
使用 PyTorch,这个程序实现如下。

代码

import torch
import matplotlib.pyplot as plt
import numpy as np# X and Y data,观测数据,包含多条
# 每条包含 3 个数据,分别代表石油、黄金、原煤的价格
x_data = [[65., 80., 75.],[89., 88., 93.],[80., 91., 90.],[30., 98., 100.],[50., 66., 70.]]
# 对应的这支股票的价格
y_data = [[152.],[185.],[189.],[196.],[142.]]# 定义输入 tensor 和输出 tensor 的变量
x=torch.autograd.Variable(torch.Tensor(x_data)) 
y=torch.autograd.Variable(torch.Tensor(y_data))# Our hypothesis XW+b,定义模型及参数
model=torch.nn.Linear(3,1,bias=True)# cost criterion,定义损失函数
criterion=torch.nn.MSELoss()# Minimize,优化器
optimizer=torch.optim.SGD(model.parameters(),lr=1e-7)# 训练轮数
epochs=200
cost_h=np.zeros(epochs)# Train the model,对于这个简单的问题,没有使用 SGD,每次都是将数据录入
for step in range(epochs):optimizer.zero_grad()hypothesis=model(x) # Our hypothesiscost=criterion(hypothesis,y)cost.backward()optimizer.step()cost_h[step]=cost.data.numpy()print(step,'Loss:',cost.data.numpy(),'\nPredict:\n',hypothesis.data.numpy())for name, param in model.named_parameters():if param.requires_grad:print(name, param.data)plt.plot(cost_h)
plt.show()

执行结果

使用 Python 运行上述程序,结果如下:

weight tensor([[-0.0980,  0.5064,  0.4115]])
bias tensor([-0.1257])

在这里插入图片描述

因为模型的定义是:

model=torch.nn.Linear(3,1,bias=True)

也就是包含了三个参数和一个偏置,最终机器学习得到的公式就是:
v = − 0.0980 x + 0.5064 y + 0.4115 z − 0.1257 v = -0.0980x + 0.5064y + 0.4115z -0.1257 v=0.0980x+0.5064y+0.4115z0.1257

我们就可以由某一天的黄金、石油、原煤的价格,来预测这支股票的价格。


  1. 因变量(dependent variable)函数中的专业名词,也叫函数值。函数关系式中,某些特定的数会随另一个(或另几个)会变动的数的变动而变动,就称为因变量。如:Y=f(X)。此式表示为:Y随X的变化而变化。Y是因变量,X是自变量。 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20250205——Windows系统基于ollama的DeepSeek-R1本地安装

1、安装ollama 1.1 Windows系统 打开ollama官网链接Download Ollama on Windows,根据自己的系统下载安装包,如果是Windows系统,下载Windows版本。 1.1 Linux系统 (这个是因为运行遇到报错了,想自己记录一下解决方法&a…

VSCode中使用EmmyLua插件对Unity的tolua断点调试

一.VSCode中搜索安装EmmyLua插件 二.创建和编辑launch.json文件 初始的launch.json是这样的 手动编辑加上一段内容如下图所示: 三.启动调试模式,并选择附加的进程

java-关键字(final,static)

关键字 final 和 static 是两个常用的关键字,它们分别用于不同的场景,具有不同的作用。 final final 关键字用于表示某个实体是不可变的。它可以应用于变量、方法和类。 final 变量 当 final 用于变量时,表示该变量一旦被初始化后&#…

pytorch基于FastText实现词嵌入

FastText 是 Facebook AI Research 提出的 改进版 Word2Vec,可以: ✅ 利用 n-grams 处理未登录词 比 Word2Vec 更快、更准确 适用于中文等形态丰富的语言 完整的 PyTorch FastText 代码(基于中文语料),包含&#xff1…

JVS低代码逻辑引擎多种业务场景触发案例配置:涵盖列表页按钮、表单数据、流程审批、外部API接口调用等

逻辑引擎作为JVS低代码开发套件的核心组件,专注于业务逻辑的快速构建与实现,它扮演着程序配置与执行的核心角色,适用于多样化的应用场景。该逻辑引擎设计灵活,能够通过多种配置方式被触发,以精准响应各类业务需求并实现…

文字加持:让 OpenCV 轻松在图像中插上文字

前言 在很多图像处理任务中,我们不仅需要提取图像信息,还希望在图像上加上一些文字,或是标注,或是动态展示。正如在一幅画上添加一个标语,或者在一个视频上加上动态字幕,cv2.putText 就是这个“文字魔术师”,它能让我们的图像从“沉默寡言”变得生动有趣。 今天,我们…

2024年12月 Scratch 图形化(四级)真题解析 中国电子学会全国青少年软件编程等级考试

202412 Scratch 图形化(四级)真题解析 中国电子学会全国青少年软件编程等级考试 一、选择题(共10题,共30分) 第 1 题 列表存放全班同学的身高,小猫运行下列程序,下列选项说法正确的是?( &#…

基于springboot的在线BLOG博客网

作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 项目包含: 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…

trinitycore服务器离线,原来是mysql里数据库flag设置为2离线状态了

先上结论: 登录trinitycore服务器的时候,显示服务器离线,原来是mysql里数据库flag设置为2离线状态了。修改flag的值为0,服务器就在线了,问题解决。 问题: 登录trinitycore服务器的时候,显示服…

ASP.NET Core Filter

目录 什么是Filter? Exception Filter 实现 注意 ActionFilter 注意 案例:自动启用事务的筛选器 事务的使用 TransactionScopeFilter的使用 什么是Filter? 切面编程机制,在ASP.NET Core特定的位置执行我们自定义的代码。…

Colorful/七彩虹 隐星P15 TA 24 原厂Win11 家庭版系统 带F9 Colorful一键恢复功能

Colorful/七彩虹 隐星P15 TA 24 原厂Win11 家庭中文版系统 带F9 Colorful一键恢复功能 自动重建COLORFUL RECOVERY功能 带所有随机软件和机型专用驱动 支持机型:隐星P15 TA 24 文件下载:asusoem.cn/745.html 文件格式:ISO 系统版本&…

Unity游戏(Assault空对地打击)开发(3) 摄像机的控制

详细步骤 打开My Assets或者Package Manager。 选择Unity Registry。 搜索Cinemachine,找到 Cinemachine包,点击 Install按钮进行安装。 关闭窗口,新建一个FreeLook Camera,如下。 接着新建一个对象Pos,拖到Player下面…

synchronized, volatile 在 DCL 的作用

背景 最近在看设计模式,在单例模式的 Double Check Lock(DCL)中,存在两个关键字:volatile & synchronized。 之前都知道 DCL 怎么写,直接套娃。但是这两关键字在单例里面的作用还没深究过&#xff0c…

UE Bridge混合材质工具

打开虚幻内置Bridge 随便点个材质点右下角图标 就能打开材质混合工具 可以用来做顶点绘制

【Rust自学】17.3. 实现面向对象的设计模式

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 17.3.1. 状态模式 状态模式(state pattern) 是一种面向对象设计模式,指的是一个值拥有的内部状态由数个状态对象&#xff08…

基于Kamailio、MySQL、Redis、Gin、Vue.js的微服务架构

每个服务使用一台独立的服务器的可行部署方案,尤其是在高并发、高可用性要求较高的场景中。这种方案通常被称为分布式部署或微服务架构。以下是针对您的VoIP管理系统(基于Kamailio、MySQL、Redis、Gin、Vue.js)的详细分析和建议。 1. 分布式部…

Java的Integer缓存池

Java的Integer缓冲池? Integer 缓存池主要为了提升性能和节省内存。根据实践发现大部分的数据操作都集中在值比较小的范围,因此缓存这些对象可以减少内存分配和垃圾回收的负担,提升性能。 在-128到 127范围内的 Integer 对象会被缓存和复用…

第十八章 视图

目录 一、概述 二、语法 2.1. 创建视图 2.2. 查询视图 2.3. 修改视图 2.4. 删除视图 2.5. 示例 三、检查选项 3.1. CASCADED(级联) 3.2. LOCAL(本地) 四、视图的更新 五、视图作用 5.1. 简单 5.2. 安全 5.3. 数据独…

[LeetCode]day13 19.删除链表的倒数第n个结点

19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) 题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2&a…

nodejs:express + js-mdict 网页查询英汉词典,能播放声音

向 DeepSeek R1 提问: 我想写一个Web 前端网页,后台用 nodejs js-mdict, 实现在线查询英语单词 1. 项目结构 首先,创建一个项目目录,结构如下: mydict-app/ ├── public/ │ ├── index.html │ ├── st…