在PyTorch中进行多线性回归预测

多重线性回归模型是一种监督学习算法,可用于根据多个输入变量x预测目标变量y。这是一个线性回归问题,其中使用多个输入变量x或特征来预测目标变量y。该算法的一个典型用例是根据房屋的大小、房间数量和房龄来预测房价。

在之前的教程中,我们专注于简单线性回归,其中我们只使用一个变量x来预测目标变量y。从现在开始,我们将使用多个输入变量进行预测。虽然本教程只关注从多个输入变量x中进行单个输出预测y,但在随后的教程中,我们将向您介绍多输入-多输出回归问题。通常,在实际场景中会采用相同的做法来构建更复杂的神经网络架构。

本教程将展示如何在 PyTorch 中实现一个多

线性回归模型。具体来说,您将学习

  • 如何回顾多维线性回归。
  • 如何使用 PyTorch 进行多重线性回归模型预测。
  • 如何在 PyTorch 中使用Linear类进行多重线性回归。
  • 如何在 PyTorch 中使用nn.Module构建自定义模块。

通过我的《用PyTorch进行深度学习》一书来启动你的项目。它提供了包含可用代码自学教程


让我们开始吧。

使用 PyTorch 中的优化器。
图片来源:Mark Boss。保留部分权利。

概述

本教程分为三个部分;它们是

  • 准备预测数据
  • 使用Linear类进行多重线性回归
  • 可视化结果

准备预测数据

与简单线性回归模型的情况一样,让我们为模型初始化权重和偏差。请注意,我们对权重和偏差使用了多维张量,因为我们将使用多个输入变量。

接下来,我们将定义用于预测的前向函数。之前我们使用标量乘法,但这里我们使用 PyTorch 的mm函数进行矩阵乘法。此函数实现了具有多个输入变量的线性方程。请注意,多维张量是矩阵,需要遵循一些规则,例如矩阵乘法。我们稍后将对此进行更多讨论。

现在我们已经初始化了权重和偏差,并构建了一个用于预测的前向函数,让我们为输入变量定义一个张量x

输出如下:

请注意,在矩阵乘法torch.mm(x, w)中,矩阵x数必须等于w数。在本例中,我们有一个$1\times 2$的x张量和一个$2\times 1$的w张量,矩阵乘法后得到一个$1\times 1$的张量。

同样,我们可以将线性方程应用于多个样本。例如,让我们创建一个张量X,其中每一行代表一个样本。

为了进行预测,我们将使用与上面相同的函数。

它会打印:

如您所见,我们已经获得了多个输入变量的结果。

使用Linear类进行多重线性回归

我们无需从头编写函数,而是可以使用 PyTorch 自带的内置类Linear进行预测。这在构建复杂而强大的模型架构时更为有用。

让我们创建一个Linear模型,并对上面定义的相同张量X进行预测。这里我们将定义两个参数:

  • in_features:表示输入变量X的数量和模型权重的数量,本例中为 2。
  • out_features:表示输出/预测值的数量,本例中为 1。

现在,让我们使用我们的lr_model对象,用随机初始化的权重和偏差对X进行预测。

本例中的输出如下:

请注意输出的形状,而不是值。这与我们使用矩阵乘法时的情况相同。

想开始使用PyTorch进行深度学习吗?

立即参加我的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

使用nn.Module创建自定义模块

或者,我们也可以为我们的线性模型创建自定义模块。虽然目前这可能看起来多余,但在我们构建最先进的神经网络时,这可能是必需的。

请注意,自定义模块是对象和类。在本例中,我们将定义一个线性回归类LR,并使其成为nn.Module包的子类。因此,nn.Module包中的所有方法和属性都将被继承。

我们将在构造函数的参数中定义输入和输出的大小,即input_featuresoutput_features。此外,我们将在对象构造函数中调用super(),这使我们能够使用父类nn.Module中的方法和属性。现在我们可以使用torch.nn.Linear对象并在其中定义参数input_featuresoutput_features

最后,为了进行预测,我们将定义forward函数。

我们将以两个输入和一个输出的方式构建我们的线性回归模型,如下所示。

现在,让我们再次使用我们的自定义模块对具有多个输入样本的张量X进行预测。

它会打印:

使用parameters()方法,我们可以获取随机初始化参数的列表。

它会打印:

或者,我们也可以使用state_dict()方法来检查模型的参数。

综合起来,以下是创建不同多重线性回归模型的完整代码

总结

在本教程中,您学习了如何使用多重线性回归模型进行预测。具体来说,您学习了

  • 如何回顾多维线性回归。
  • 如何使用 PyTorch 进行多重线性回归模型预测。
  • 如何在 PyTorch 中使用Linear类进行多重线性回归。
  • 如何在 PyTorch 中使用nn.Module构建自定义模块。

开始使用PyTorch进行深度学习!

Deep Learning with PyTorch

学习如何构建深度学习模型

...使用新发布的PyTorch 2.0库

在我的新电子书中探索如何实现
使用 PyTorch进行深度学习

它提供了包含数百个可用代码自学教程,让你从新手变成专家。它将使你掌握:
张量操作训练评估超参数优化等等...

通过动手练习开启你的深度学习之旅


查看内容

在 PyTorch 中使用多重线性回归进行预测的 2 条回复

  1. GEORGE ASSUON 2022 年 12 月 16 日上午 8:23 #

    我是加纳一所大学的博士生。我的研究方向是机器学习在金融领域的应用。我需要一些书籍和专家的帮助。
    谢谢

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。