在 Python 中实现线性回归2025年3月17日 | 阅读 7 分钟 线性回归是一种统计技术,用于描述因变量与若干自变量之间的关系。本教程将讨论线性回归的基本概念及其在 Python 中的应用。 为了帮助理解线性回归的基本概念,我们从最简单的线性回归形式开始,即“简单线性回归”。 简单线性回归简单线性回归 (SLR) 是一种使用一个特征来预测响应的方法。它假定两个变量是线性相关的。因此,我们试图找到一个线性方程,该方程能够尽可能精确地根据特征或独立派生变量 (x) 来预测响应值 (y)。 让我们考虑一个数据集,其中我们有多个特征 x 对应的响应 y。 ![]() 为简化起见,我们定义 x 为 **特征向量**,即 x = [x1, x2, x3, …., xn], y 为 **响应向量**,即 y = [y1, y2, y3 …., yn] 对于 **n** 个观测值(以上面的例子为例,n = 10)。 上述数据集的散点图如下所示:- ![]() 下一步是确定最适合此散点图的直线,以便我们可以预测特征的任何新值的响应(即,x 的值不在数据集中)。 这条线称为回归线。 回归线的方程可以表示如下: ![]() 此处,
为了构建我们的模型,我们需要“学习”或估计回归系数 ?0 和 ?1 的值。在我们确定了这些系数之后,我们就可以利用这个模型来进行响应预测了! 在本教程中,我们将采用 **最小二乘法** 的概念。 让我们考虑 yi = ?0+ ?1xi + ?i=h(xi )+ ?i ? ?i= yi- h(xi ) 这里,?i 是第 i 个观测值的 **残差误差**。 因此,我们的目标是最小化总残差误差。 我们将成本函数或平方误差 **J** 定义为 ![]() 我们的任务是找到 ?0 和 ?1 的值,使得 J(?0,?1) 最小。 在不深入数学细节的情况下,我们给出以下结果: ![]() 其中,ssxy 是“y”和“x”的偏差之和。 ![]() 而 ssxx 是“x”的平方偏差之和。 ![]() 代码 输出 Estimated coefficients are : b_0 = -0.4606060606060609 b_1 = 1.1696969696969697 多元线性回归多元线性回归试图解释多个要素之间的关系,然后通过将线性方程应用于数据来响应。显然,这不过是线性回归的扩展。 设想一个数据集,其中包含一个或多个特征(或自变量)以及一个响应(或因变量)。 数据集还包含另外 n 行/观测值。 我们定义 **X** (特征矩阵) = 这是一个大小为 **“n * p”** 的矩阵,其中“xij”表示第 i 个观测值的第 j 个属性的值。 因此, ![]() 并且, **y** (响应向量) = 这是一个大小为 **n** 的向量,其中表示第 i 个观测值的响应值。 ![]() 对于“p”个特征的回归线表示为: ![]() 其中 h(xi) 是第 i 个观测点的预测响应值,而 ?0,?1,?2,....,?p 是回归系数。 我们也可以写成: ![]() 其中,?i 表示第 i 个观测点的残差误差。 我们也可以通过将“X”的属性矩阵表示为来进一步推广我们的线性模型: ![]() 因此,线性模型可以用矩阵形式表示如下: y=X?+? 其中, ![]() 我们现在使用一种称为最小二乘法的算法来确定 b 的估计值,即 b'。如前所述,这种最小二乘法用于在总残差误差最小的情况下找到 b'。 我们将给出以下结果: ![]() 其中 ' 是矩阵的转置,-1 是矩阵的逆。 借助最小二乘估计 b',多元线性回归模型现在由以下公式计算: ![]() 其中 y' 是估计的响应向量。 代码 输出 Regression Coefficients are: [-8.95714048e-02 6.73132853e-02 5.04649248e-02 2.18579583e+00 -1.72053975e+01 3.63606995e+00 2.05579939e-03 -1.36602886e+00 2.89576718e-01 -1.22700072e-02 -8.34881849e-01 9.40360790e-03 -5.04008320e-01] Variance score is: 0.7209056672661751 在上面的示例中,我们使用方差得分来计算准确性得分。 我们定义 explained_variance_score = 1 - Var{y - y'}/Var{y} 其中 y' 是估计的输出目标,y 是对应的(正确的)目标输出,Var 是方差,它是标准差的平方。 最佳得分是 1.0。分数越低越差。 假设以下是线性回归模型在用于数据集时所基于的主要假设:
![]() 在本教程的最后,我们将讨论线性回归的一些应用。 应用以下是基于线性回归的应用领域:
下一主题Python 中的嵌套装饰器 |
Python 中的 csv 模块是一个内置库,提供读取和写入 CSV(逗号分隔值)格式数据的功能。此模块使得使用 CSV 数据变得容易,无论是从文件读取数据,将数据写入文件,还是...
5 分钟阅读
网络爬虫是一种抓取网页并从中提取详细信息的过程。与为一个项目定期从网页复制和粘贴信息相比,网络爬虫可以有效地解决这个问题。但是,可用于网络爬虫的网站很少。有一些...
阅读 3 分钟
基础/必备知识简介:字典是 Python 中可用的数据类型之一。如果您熟悉集合和列表,那么字典就是另一种数据存储方式。从正式定义来看,字典是存储在...中的无序数据集合。
阅读 3 分钟
简介:在本教程中,我们将学习如何使用 Python 生成具有给定入口和出口点的随机无环迷宫。在这里,我们需要获取两个整数值 A 和 B。主要任务是创建一个大小为 A * B 的迷宫,其中只有 0 和 1...
阅读9分钟
在本教程中,我们将学习 RabbitMQ 并使用 Python 实现它。本教程还将为您简要介绍消息队列并定义基本概念。我们将了解 RabbitMQ、消息队列、交换机等许多其他内容的基本功能。在深入探讨之前...
阅读9分钟
在本教程中,我们将学习用 Python 编写的 bisect 算法。它的源代码只有 80 行。让我们通过 bisect 模块的介绍。介绍 它基本上是一个二分法算法,用于查找添加给定值的插入点...
7 分钟阅读
语言在人类互动中扮演着至关重要的角色。人类天生就能理解别人在说什么,并知道该如何回应。这种能力是通过多年来与他人和社会的持续交流而发展起来的。人类用于合作的语言...
阅读 10 分钟
Python 是世界上最著名的编程方言之一。其受欢迎的一个原因是 Python 使处理信息变得容易。从文本文件读取信息是 Python 中的一项标准任务。在这里,我们将研究...
阅读9分钟
简介 求解线性方程是 Python 简化的一项基本数学运算。ax + by = c,其中 a、b 和 c 是常数,表示线性方程(或最高幂为 1 的方程)。求解线性方程时,主要目标是...
阅读 3 分钟
什么是 Matplotlib? Matplotlib 是 Python 中的一个库,用于使用其内置函数创建静态和动态动画和绘图。它具有许多内置功能和内置分析工具,用于分析任何图形或图表。如果我们想绘制任何三维...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India