使用torch解决线性回归问题

  1. 数据处理

import torch
import numpy as np
import pandas as pd
import matplotlib.pyplot as pltdata=pd.read_csv('./datasets/Income1.csv') #数据准备data.head(5)#展示数据
#以上所有的代码都是用jupyter notebook写,形成了阶段性的结果展示

查看数据信息
data.info()

绘制数据的散点图
plt.scatter(data.Education,data.Income) #绘制散点图
plt.xlabel('Education')
plt.ylabel('Income')
plt.show()

数据转换
X=torch.from_numpy(data.Education.to_numpy().reshape(-1,1)).type(torch.FloatTensor)
Y=torch.from_numpy(data.Income.to_numpy().reshape(-1,1)).type(torch.FloatTensor)

上面一行代码首先通过data.Education获取受教育年限这一列,使用to_numpy()方法将其转换为ndarrray数组形式,然后使用reshape方法将其形状设置为二维数组,并且将最后一个维度明确为1。

展示数据的形状
print(X.size(),Y.size())

查看数据集的形状如上图所示,目前数据集是二维的,最后一个维度为1,代表单条数据的长度,前面的30代表数据的个数,所以X和Y这两个数据集的形状可以理解为输入X是30个长度为1的数据,输出Y也是30个长度为1的数据。

模型建立与数据训练

编写训练类
from torch import nn #nn.Module是PyTorch的高阶APIclass EIModel(nn.Module):def __init__(self):super(EIModel,self).__init__()   #继承父类的属性 重写init的方法有两种  一.super(子类,self).__init__() 二.父类.__init__(self)self.linear=nn.Linear(in_features=1,out_features=1)#创建线性层def forward(self,inputs):logits=self.linear(inputs)   #在输入上调用初始化的线性层return logits

因为当前模型是一个简单的线性回归模型,只有w和b两个参数,在__init__()方法中,使用nn.Linear()方法初始化一个线性连接层,nn.Linear有两个参数,即in_features和out_features,分别代表输入和输出维度的大小,根据X和Y的size()方法,我们可以输入和输出的维度大小都为1.

创建EIModel对象
model=EIModel() #创建一个ETModel对象

这里的模型就是一个最简单的线性层,也就是所谓的一个线性函数,只有w和b两个参数,接下来是我们定义计算损失函数,并且根据损失值进行梯度优化,优化模型参数

构建损失函数
loss_fn=nn.MSELoss()   #定义了均方误差损失来计算损失函数
opt=torch.optim.SGD(model.parameters(),lr=0.0001)  #初始化一个优化器

第一行代码就是用了PyTorch中内置的均方误差来计算损失函数,第二行初始化了一个内置的优化器,第一个参数为需要优化的变量,通过model.parameters()方法可以获取模型中的所有变量,优化器中参数lr为学习率,也就是在计算梯度时用到的alpha。

迭代训练
for epoch in range(5000):         #对全部的数据训练5000次for x,y in zip(X,Y):          #同时对X和Y迭代y_pred=model(x)           #调用model得到预测输出y_predloss=loss_fn(y_pred,y)    #根据模型预测输出与实际的值y计算损失opt.zero_grad()           #将累计的梯度置为0loss.backward()           #反向传播损失,计算损失与模型参数之间的梯度opt.step()                #根据计算得到梯度优化模型参数
print("Down!")

模型训练代码有一行opt.zero_grad(),是因为PyTorch会累计每次计算的梯度,使用此代码将上一循环中计算的梯度置为0

展示参数
print(list(model.named_parameters()))#以生成器的形式返回模型参数的名称和值

模型效果展示
#绘制原数据分布的散点图
plt.scatter(data.Education,data.Income,label='real data')
#用我们训练出来的参数,来绘制直线
plt.plot(X,model(X).detach().numpy(),c='r',label='predict line')
plt.xlabel('Education')#设置x轴的标签
plt.ylabel('Income')#设置y轴的标签
plt.legend()#可以显示图例
plt.show()

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

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

相关文章

SSM整合——Springboot

1.0 概述 1.1 持久层: DAO层(mapper) DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此 DAO层的设计首先是设计DAO的接口, 然后在spring-mapper.xml的配置文件中定义此接…

混合预编码(Hybrid Precoding)的全连接结构与子连接结构

A Survey on Hybrid Beamforming Techniques in 5G: Architecture and System Model Perspectives 全连接结构的混合预编码 子连接结构的混合预编码 Alternating Minimization Algorithms for HybridPrecoding in Millimeter Wave MIMO Systems

深度学习——第4.3章 深度学习的数学基础

第4章 深度学习的数学基础 目录 4.7 指数函数和对数函数 4.7 指数函数和对数函数 深度学习经常会用到Sigmoid函数和Softmax函数,这些函数是通过包含exp(x)的指数函数创建的。后面我们需要求解这些函数的导数。 4.7.1 指数 指数是一个基于“乘以某个数多少次”&a…

关于个人职业选择

职业选择,一直是个老生常谈的话题。这并不是一个容易做的决定。 让我们来看看AI怎么说。 首先是方向性的回答: 然后是一些具体的回答 我个人比较倾向于深耕网络安全。这是一个很有趣也是一个持续发展着的领域。 不知道关于这个事情你怎么看&#xff0…

创建vue项目:vue脚手架安装、vue-cli安装,vue ui界面创建vue工程(vue2/vue3),安装vue、搭建vue项目开发环境(保姆级教程二)

今天讲解 Windows 如何利用脚手架创建 vue 工程,以及 vue ui 图形化界面搭建 vue 开发环境,这是这个系列的第二章,有什么问题请留言,请点赞收藏!!! 文章目录 1、安装vue-cli脚手架2、vue ui创建…

智能优化算法应用:基于斑马算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于斑马算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于斑马算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.斑马算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

R语言,table()函数实现统计每个元素出现的频数+并将最终统计频数结果转换成dataframe数据框形式

在 R中,要统计dataframe数据框中每个元素出现的频数,可以使用table()函数。以下是一个示例: 目录 一、创建数据 二、统计第一列每个元素出现的频数 三、统计第二列每个元素出现的频数 四、将频数结果转换为数据框,并改列名 一…

ambari hive on Tez引擎一直卡住

hive on tez使用./bin/hive启动后一直卡住,无法进入命令行 使用TEZ作为Hive默认执行引擎时,需要在调用Hive CLI的时候启动YARN应用,预分配资源,这需要花一些时间,而使用MapReduce作为执行引擎时是在执行语句的时候才会…

人工智能_机器学习063_SVR支持向量机_回归拟合天猫双十一销量方程---人工智能工作笔记0103

之前我们用线性回归做过天猫双十一销量预测的数据,现在我们再来用SVR支持向量机来做一下 首先上面是给出了销量,对应2009年到2019年的,销售额 可以看到: X=np.arange(2009,2020)-2008 统一减去2008的话看起来数据比较简单了 y=np.array([0.5,9.36,52,191,350,571,912,1207,1…

题目:快速幂(蓝桥OJ 1514)

题目描述&#xff1a; 解题思路&#xff1a; 使用快速幂模板&#xff08;倍增思想&#xff09;。 题解&#xff1a; #include<bits/stdc.h> using namespace std; using ll long long;ll ksm(ll a, ll b, ll c)//注意&#xff1a;需要取模的地方都取模c&#xff0c;且…

使用 Kubernetes 为 CI/CD 流水线打造高效可靠的临时环境

介绍 在不断发展的科技世界中&#xff0c;快速构建高质量的软件至关重要。在真实环境中测试应用程序是及早发现和修复错误的关键。但是&#xff0c;在真实环境中设置 CI/CD 流水线进行测试可能既棘手又昂贵。 Kubernetes 是一个流行的容器编排平台&#xff0c;提供临时环境解决…

【STM32】蓝牙氛围灯

Docs 一、项目搭建和开发流程 一、项目需求和产品定义 1.需求梳理和产品定义 一般由甲方公司提出&#xff0c;或由本公司市场部提出 需求的重点是&#xff1a;这个产品究竟应该做成什么样&#xff1f;有哪些功能&#xff1f;具体要求和参数怎样&#xff1f;此外还要考虑售价…

【postgresql】ERROR: INSERT has more expressions than target columns

执行下面sql insert into apply_account_cancellation3 select * from pply_account_cancellation; 返回下面错误信息 insert into apply_account_cancellation3 select * from apply_account_cancellation > ERROR: INSERT has more expressions than target colu…

如何将 MySQL 数据库转换为 SQL Server

本文解释了为什么组织希望将其 MySQL 数据库转换为 Microsoft SQL 数据库。本文接着详细介绍了尝试转换之前需要记住的事项以及所涉及的方法。专业的数据库转换器工具将帮助您快速将 MySQL 数据库记录转换为 MS SQL Server。 在继续之前&#xff0c;我们先讨论一下 MySQL 到 M…

新能源汽车生产污废水需要哪些工艺及设备

新能源汽车的快速发展带来了许多环境问题&#xff0c;其中之一就是生产过程中产生的污废水。由于新能源汽车的生产过程与传统汽车有所不同&#xff0c;因此需要采用特定的工艺和设备来处理和处理这些废水。 首先&#xff0c;新能源汽车生产过程中产生的污废水主要来自洗涤和冷却…

游戏中小地图的制作__unity基础开发教程

小地图的制作 Icon标识制作制作摄像机映射创建地图UI效果“不一样的效果” 在游戏中经常可以看到地图视角的存在&#xff0c;那么地图视角是如何让实现的呢&#xff1f; 这一期教大家制作一个简易的小地图。 &#x1f496;点关注&#xff0c;不迷路。 老样子&#xff0c;我们还…

C++ Qt开发:LineEdit单行输入组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍LineEdit单行输入框组件的常用方法及灵活运用…

【NR技术】NR NG-RAN整体架构 -功能划分(三)

1 概述 NG-RAN节点包括: gNB&#xff0c;向终端提供NR用户平面和控制平面协议终端;ng-eNB&#xff0c;向终端提供E-UTRA用户平面和控制平面的协议终端。gNB和ng- eNB通过Xn接口相互连接。gnb和NG- eNB也通过NG接口连接到5GC&#xff0c;更具体地说&#xff0c;通过NG-C接口连…

深入浅出:HTTPS单向与双向认证及证书解析20231208

介绍: 网络安全的核心之一是了解和实施HTTPS认证。本文将探讨HTTPS单向认证和双向认证的区别&#xff0c;以及SSL证书和CA证书在这些过程中的作用&#xff0c;并通过Nginx配置实例具体说明。 第一部分&#xff1a;HTTPS单向认证 定义及工作原理&#xff1a;HTTPS单向认证是一…

网络游戏APP备案|游戏

网络游戏APP备案|游戏 网络游戏备案分析需要备案原因&#xff08;个人看法&#xff09;对小公司对大公司 总结 网络游戏备案分析 相信做网络游戏的伙伴们在23年都收到了各个平台的公告&#xff0c;网络游戏需要进行APP的备案。也就是说网路游戏现在安卓平台也不是你想上架测试…