python实现最小二乘法的线性回归_Python实现——二元线性回归(最小二乘法)

本文介绍了使用Python实现二元线性回归的最小二乘法,详细阐述了矩阵公式法的过程,并通过Coursera的数据进行实践。尽管公式推导过程存在理解难度,但Python库函数的运用是关键。代码示例展示了如何从Excel数据读取,计算权重并绘制三维图形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2019/3/30

二元线性回归——矩阵公式法又名:对于python科学库的糟心尝试

二元线性回归严格意义上其实不过是换汤不换药,我对公式进行推导,其实也就是跟以前一样的求偏导并使之为零,并且最终公式的严格推导我大概也只能说是将将理解,毕竟最初的矩阵一开始都不太清楚应该是什么样子的,其中,Coursera的课程起到了非常显著的帮助。

其实这个部分我并不想写太多,因为理解并不是十分透彻,总体来讲,感觉就是一个公式的事情,其中对于python数据类型以及python库函数的使用反而耗费的时间更多,回头来更新。

python库函数的运用非常重要,也是卡住我好久的主要原因,其次,对于python几种数据结构类型也让我十分苦恼,毕竟我不太清楚大部分函数会返回给我什么样的结果。

其中最终的公式应该说是非常普及了,随便的搜索便可查找到,虽然花了这么大的功夫,最终带给我的印象却是远远不及梯度下降的那种循序渐进看着计算机一步步探索来的深刻。

然而,这不正是前人的努力所要想做到的一步到位的方式吗?

虽然是真真正正的计算公式,但是若是面对特殊的矩阵情况或者过大的矩阵,这个方法也是力不从心的,详情我不多赘述,毕竟我还是个没有系统学习线代概率的赤脚蒟蒻。

先这样,或许会再来更新吧。

以下是利用Coursera提供的部分数据进行的实现图像:

这里给出完整代码:

import xlrd

import sympy as sp

最小二乘法是一种常用的回归分析方法,用于确定两个变量之间的线性关系。在二元线性回归中,我们希望找到一个线性方程,将自变量 X 和因变量 Y 进行拟合。假设我们有 n 个样本数据,X 和 Y 分别表示自变量和因变量,则线性回归的模型可以表示为: Y = β0 + β1X + ε 其中,β0 和 β1 是模型的参数,ε 表示误差项。我们的目标是找到 β0 和 β1 的最优值,使得模型可以最好地拟合数据。 最小二乘法的基本思想是,通过最小化误差平方和来估计模型参数。误差平方和(SSE)是指模型预测值与实际值之间的差异的平方和,即: SSE = Σ(Yi - Ŷi)2 其中,Yi 表示第 i 个样本的实际值,Ŷi 表示模型预测的值。 为了最小化 SSE,我们需要对 β0 和 β1 分别偏导,并令偏导数为 0,得到: β1 = Σ((Xi - X̄)(Yi - Ȳ)) / Σ(Xi - X̄)2 β0 = Ȳ - β1X̄ 其中,X̄ 和 Ȳ 分别表示自变量 X 和因变量 Y 的平均值。 下面是 Python 代码实现: ```python import numpy as np def linear_regression(x, y): # X 和 Y 的平均值 x_mean = np.mean(x) y_mean = np.mean(y) # 根据公式计算 β1 和 β0 numerator = np.sum((x - x_mean) * (y - y_mean)) denominator = np.sum((x - x_mean) ** 2) beta_1 = numerator / denominator beta_0 = y_mean - beta_1 * x_mean return beta_0, beta_1 ``` 其中,x 和 y 是分别存储自变量和因变量的 numpy 数组。函数 linear_regression 返回 β0 和 β1 的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值