[Pytorch基础]线性回归

刚开始入门机器学习,线性回归是肯定躲不过的。特别到之后的神经网络的全连接层也是需要线性回归基础。

最简单的公式就是 y = w x + b y=wx+b y=wx+b
x和y是已知量,要求出w和b的值。
我们在平面坐标图上看, y = w x + b y=wx+b y=wx+b,就是一条直线。我们要确认这条直线就只要两个点就可以确定出来。
但是现实情况的数据并不是百分百符合 y = w x + b y=wx+b y=wx+b这条直线的,很可能是围绕这条直线变动的。那么y就有可能出现偏差了。
实际情况y和符合 y ’ = w x + b y’=wx+b y=wx+b预测情况的这条直线对应的y‘就会出现偏差了。
如何计算这两个之间的偏差呢,基本我们是使用均方差的方式 ( y − y ‘ ) ( y − y ′ ) (y-y‘)(y-y') (yy)(yy)的方式来衡量实际情况y和预测情况y’之间的误差。
随着我们真实数据越来越多,那么就会存在多个点用来计算误差。
误差值=(总数据的均方差/数据量)
误差值的计算相当于就是损失函数计算
在这里插入图片描述

我们当然希望这个误差值越来越小,所以这个误差值就是用来调整y’=wx+b 中斜率w值和b值,让其不断变小,这就让涉及到学习率这个值了。
新的 w ′ = w − 学 习 率 ∗ 误 差 值 w'= w - 学习率*误差值 w=w
通过不断的调整w和b值,那么就会让这条线更加更符合现实情况的数据预期。
在这里插入图片描述

以上是最简单的线性回归情况。
那么要如何模拟更复杂的情况呢?
现实情况是一个结果y,更可能和一堆相关x有关系,那么很明显公式就会如下一样
y ′ = w 1 ∗ x 1 + w 2 ∗ x 1 + … … + w n ∗ x n + b y' = w1*x1+ w2*x1+……+wn*xn +b y=w1x1+w2x1++wnxn+b
已知量x通过不断的去计算出真实y和预测y’之间的误差值来不断更新w和b值,用这样的方式不断完善对现实情况的预测。
使用矩阵来表达如一下
y ′ = [ w 1 , w 2 , … … , w n , b ] ∗ [ x 1 , x 2 , … … , x n , 1 ] y' = [w1,w2,……,wn,b] * [x1,x2,……,xn,1] y=[w1,w2,,wn,b][x1,x2,,xn,1]
其中 [ w 1 , w 2 , … … , w n , b ] [w1,w2,……,wn,b] [w1,w2,,wn,b]就是同loss函数和学习率进行变化的部分。

经典的波士顿房价预测就是基本的公式就是使用以上说的线性回归来预测现实情况数值的情况。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为您解答关于使用PyTorch进行线性回归的问题。 在PyTorch中进行线性回归可以分为以下几个步骤: 1. 准备数据:首先,您需要准备数据,包括训练数据和验证数据。在本例中,我们将使用一个简单的数据集,其中包含一些房屋的面积和价格,以用于预测房价。 2. 定义模型:接下来,您需要定义一个模型。在本例中,我们将使用一个简单的线性模型,它包含一个线性层,该层将输入的特征映射到输出的标签。 3. 定义损失函数:您需要定义一个损失函数,以便在训练模型时计算损失。在本例中,我们将使用均方误差(MSE)损失函数。 4. 训练模型:接下来,您需要定义一个优化器,并使用训练数据对模型进行训练。在本例中,我们将使用随机梯度下降(SGD)优化器,并迭代多次来更新模型的参数。 5. 验证模型:最后,您需要使用验证数据来评估模型的性能。在本例中,我们将计算模型在验证数据上的损失,并将其与训练数据的损失进行比较,以确定模型是否过拟合。 以下是一个简单的代码示例,演示了如何使用PyTorch进行线性回归: ```python import torch import torch.nn as nn # 准备数据 x_train = torch.tensor([[1.0], [2.0], [3.0], [4.0]]) y_train = torch.tensor([[2.0], [4.0], [6.0], [8.0]]) # 定义模型 model = nn.Linear(1, 1) # 定义损失函数 criterion = nn.MSELoss() # 定义优化器 optimizer = torch.optim.SGD(model.parameters(), lr=0.01) # 训练模型 num_epochs = 1000 for epoch in range(num_epochs): # 向前传递 outputs = model(x_train) loss = criterion(outputs, y_train) # 向后传递和优化 optimizer.zero_grad() loss.backward() optimizer.step() if (epoch+1) % 100 == 0: print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item())) # 验证模型 x_val = torch.tensor([[5.0]]) y_val = model(x_val) print('预测的房价: {:.2f}'.format(y_val.item())) ``` 希望这可以帮助您理解如何使用PyTorch进行线性回归

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值