【线性回归】-最小二乘法求一元线性回归公式推导及代码实现
一.原理分析
1.如何计算一元线性回归方程最优参数
首先,假设我们有一条拟合上图这些散乱的点的直线f(x) = a*x + b ,那么我们如何判断这条线是否很好的拟合了这些点? 那么我们不妨用下面的方法 : 我们输入一个x , 得出对应的y值 , 然后在根据 真实的 y值 , 计算二者的误差, 误差越小说明直线拟合的越小
所以 我们可以得出一个损失函数 -> y - f(x) 真实的值减去 使用拟合函数计算得出的 值 就是二者的误差. 所以 我们可以计算出所有误差的和 , 这个值越小,说明总体拟合是比较好的, 为了防止出现 误差的值正负抵消的情况 (我是这么理解的), 所以我们求误差的值的平方 再求和
所以最后 误差公式是
如上图 : 这里 a 和 b 是 未知数 ,那么这个问题就转化成了一个数学问题 , 求 当 J 最小的时候 对应的
a , b 的值 ,这里涉及到了多元函数的极值问题 , 由误差函数我们可以知道 当偏导数的值是0的时候,可以求的极小值 ,所以我们可以对这个函数求偏导数 , 当偏导数的值等于0的时候 对应 a b 值
下面是推导过程
这里可以对公式进行行简单的变换
二.代码实现
1.导入依赖
import matplotlib.pyplot as plt
2.画出线性图
x = [2.8 ,2.9, 3.2 ,3.2, 3.4, 3.2, 3.3, 3.7, 3.9, 4.2]
y = [25.3, 27.6, 29.4, 32.3, 34.1, 36.2, 35.3, 39.1, 42, 45]plt.scatter(x,y)
plt.show()
3.使用最小二乘法计算参数
# 计算xy的均值
def avg(x):m = len(x)sum = 0for num in x:sum += numreturn sum / m# 构建拟合函数def fit(x, y):# 计算平均值x_avg = avg(x)y_avg = avg(y)m = len(x)# 计算参数的临时变量tmp_1 = 0;tmp_2 = 0;# 使用最小二乘法计算参数 afor i in range(m):tmp_1 += (x[i] - x_avg) * (y[i] - y_avg)tmp_2 += (x[i] - x_avg) ** 2a = tmp_1 / tmp_2# 计算b的值b = y_avg - a * x_avgreturn a,ba, b = fit(x, y)print(a)
print(b)
13.733100233100233
-11.787878787878775
4.验证
# 使用线性,模型计算值
pre_y = []for i in range(len(y)):pre_y.append(a * x[i] + b)# 使用计算出的值画图
# 散点图加直线
plt.scatter(x, y) # 画散点图
plt.plot(x, pre_y , c='r')
plt.show()
【线性回归】-最小二乘法求一元线性回归公式推导及代码实现相关推荐
- 最小二乘法求解一元线性回归
最小二乘法求解一元线性回归 介绍线性回归模型以及简单一元线性回归模型的解法. 通过代码实现最小二乘法求解一元线性回归实例,并对结果进行预测. 一.线性回归 二.回归问题的解决 三.最小二乘法介绍 四. ...
- 梯度下降的线性回归用python_一元线性回归和梯度下降的python代码实现
一元线性回归和梯度下降的python代码实现 2020-08-05 23:49 阅读数 9 import numpy as np import matplotlib.pyplot as plt imp ...
- python一元线性回归_Python实现——一元线性回归(梯度下降法)
2019/3/25 一元线性回归--梯度下降/最小二乘法又名:一两位小数点的悲剧 感觉这个才是真正的重头戏,毕竟前两者都是更倾向于直接使用公式,而不是让计算机一步步去接近真相,而这个梯度下降就不一样了 ...
- 【一元线性回归】理论一镜到底!线性回归大总结——一元线性回归(1)
考完研了,感觉考不上了,不想把总结资料浪费了,更一下线性回归.方差分析和时间序列的文章,也算是让笔记发了最后一份光和热,再接下来就是更新项目代码了,不会再写理论方面的文章了. 至少在我的目标院校来说, ...
- 第二章.线性回归以及非线性回归—一元线性回归,代价函数,相关系数,决定系数
第二章.线性回归以及非线性回归 2.1 一元线性回归 1.概念: 1).自变量: 被用来进行预测的变量,相当于输入 2).因变量: 被预测的变量,相当于输出 3).回归分析: 用来建立方程模拟两个或者 ...
- 机器学习之最小二乘法完成一元线性回归【内附Python实现】
最小二乘法代码实现 import numpy as np import matplotlib.pyplot as plt# 利用最小二乘法定义损失函数,w与b是预测函数的未知参数,ponits是坐标信 ...
- 【机器学习】线性回归——最小二乘法(理论+图解+公式推导)
- java 线性回归_Java实现一元线性回归
最近在写一个荧光图像分析软件,需要自己拟合方程.一元回归线公式的算法参考了<Java数值方法>,拟合度R^2(绝对系数)是自己写的,欢迎讨论.计算结果和Excel完全一致. 总共三个文件: ...
- python一元线性回归算法_6一元线性回归_清华编程高手尹成带你基于算法实践python量化交易_其他视频-51CTO学院...
清华编程高手尹成带你基于算法实践python量化交易 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策 ...
- 一元线性回归python代码
目录 1.最小二乘法: 2.梯度下降法: 3.理论加实践: 4.python代码: 4.1梯度下降法: 4.2最小二乘法 学习引入:机器学习中的参数模型(线性回归,逻辑回归)等.在这里我们只进行一元线 ...
最新文章
- 给力2011-东莞市南洋计算机软件有限公司 携手10大厂商提供企业安全有效节省成本解决方案...
- 选择之后触_如果有朋友在做选择时左右为难,我应该该给出什么样的建议
- 展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告...
- ASP.NET页面的CheckBoxList组件
- iReport序号自增列
- 点击劫持:X-Frame-Options未配置
- 清浊音判别 matlab,matlab语音信号处理如何判别清浊音?
- 目标检测、分割、识别、分类综述
- 对python的功能和扩展功能的认知_Python基础-基础认知和库了解
- nginx负载php导致时间不一致,nginx – 为什么php-fpm会产生并在没有服务器负载的情况下每秒摧毁数百个孩子?...
- 5G协议标准化及进展
- python入门汇总
- Linux评分脚本,linux必看脚本大全
- layabox2.0 开发微信小游戏经验分享
- SWA(随机权重平均)
- C++ + win32 + STL 写的QQ连连看外挂
- 做事的态度与工作态度
- 对话 DenseNet 一作黄高:做有韧劲、能抗压、不断探索未知的科研
- 【论文笔记】在CommonsenseQA 上追平人类: 通过External Attention 增强 Self-Attention
- $.ajax()方法详解
热门文章
- win10开机登录不需要密码默认账号
- c语音10的n次方_在C语言中,10的n次方怎么表示?
- 2023计算机毕业设计SSM最新选题之java企业财务报销审核系统n8191
- 使用HTML制作静态网站(圣诞节案例)
- 小白功能测试项目实战篇01-dtsshop开源商城项目之【会员管理】模块测试点分析
- pyqt5优秀项目python_【项目】PYQT5--Python/C++实现网络聊天室
- 数据库 --- 约束
- matlab画函数微分图,【matlab】ode45求解二阶微分方程,绘制曲线图 | 使用函数句柄的方法...
- 在c语言中以下程序的动能,c语言超星尔雅期末测试答案
- 2021PMP最全大纲内容整理