PYTHON基础:最小二乘法

最小二乘法的拟合
最小二乘法是一种常用的统计学方法,用于通过在数据点中找到一条直线或曲线,使得这条直线或曲线与所有数据点的距离平方和最小化。在线性回归中,最小二乘法被广泛应用于拟合一条直线与数据点之间的关系。

对于线性回归,我们希望找到一条直线的方程式 y = mx + b,其中 m 是斜率,b 是截距,使得这条直线与数据点的距离最小。具体而言,我们希望找到使得观测数据点 (xi, yi) 与直线上对应点 (xi, mx + b) 的距离平方和最小的斜率 m 和截距 b。

最小二乘法的基本思想是,通过最小化观测数据点与拟合直线的距离平方和来确定最佳的斜率和截距。该距离可以使用欧几里得距离(即两点之间的直线距离)来衡量。通过最小化距离平方和,可以得到一组最优的斜率和截距,使得拟合直线与数据点的整体偏差最小。

最小二乘法通常使用最小二乘解来计算最佳的斜率和截距。最小二乘解是通过求解一个最小化误差平方和的优化问题而得到的。在线性回归中,最小二乘解可以通过求解正规方程式来获得,即通过求解矩阵方程 (X^T * X) * beta = X^T * y,其中 X 是输入变量矩阵,beta 是待求解的参数向量,y 是输出变量向量。

最小二乘法的拟合结果可以通过各种方式进行评估,例如计算拟合直线与数据点之间的残差和拟合优度等指标。拟合直线的斜率和截距可以提供有关数据点之间关系的定量信息,例如变量之间的相关性、趋势和预测能力等。

总结而言,最小二乘法是一种用于拟合一条直线或曲线与数据点之间关系的统计学方法。在线性回归中,最小二乘法被广泛应用于找到最佳的斜率和截距,以描述数据点之间的线性关系。该方法通过最小化观测数据点与拟合直线之间的距离平方和,提供了一种可靠的方式来分析和预测数据。

基本的数学形式这样子的:在这里插入图片描述

这里我们只需要求出他的两个参数:斜率和截距,这里我们有专门的算法,具体的计算过程如下:在这里插入图片描述

在这里因为计算太复杂了,我们还可以通过一系列的数学化简得到更加简洁的式子:
在这里插入图片描述

最后这里就变成了求众多数据点的x、y的一些相乘相加的一些关系。,在这里我用一个组数据作为例子分别用简单的数学计算和矩阵计算来讲解

假设有这么一组数据,这里一共是9个点,我们来看下

x = [0, 4, 8, 12, 16, 20, 24, 28, 32]
y = [394.33, 329.50, 291.00, 255.17, 229.33, 204.83, 179.00, 163.83, 150.33]

我们先来看下第一种简单的数据计算

def calu(x,y,n):#这里输入三个值,x、y和一个有多少组树
#这里我们先定义初始的变量,等会用于求和sumx=0sumy=0smulx=0smuly=0mulxy=0
#我们要用循环来求和for value in range (0,n):sumx=sumx+x[value]#求所有x的加和sumy=sumy+y[value]smulx=smulx+x[value]*x[value]#求所有x的平方和smuly=smuly+y[value]*y[value]mulxy=mulxy+x[value]*y[value]#求所有x*y的平方和avex=sumx/n#求平均值avey=sumy/nsxx=smulx-(sumx*sumx)/nsxy=mulxy-(sumx*sumy)/n#求截距和斜率m=sxy/sxxb=avey-m*avexprint("y=",m,"x+",b)return b,m

这里还有另一个非常巧妙矩阵求法,这里需要掌握一定的线性代数的知识才建议理解和使用,但是非常简洁,线性代数也是在以后在常用的一种数据方式。下面提供一个代码作为参考。

Xt = np.array([np.ones(9),x])
X=Xt.transpose()#求Xt的转置
Y=y.transpose()#求y的转置
Z = np.matmul(Xt,X)#这里是让Xt、x两个矩阵相乘
Zinv=np.linalg.inv(Z)
Z2=np.matmul(Zinv,Xt)
Z3=np.matmul(Z2,Y)
#求矩阵斜率
b = Z3[0]
m = Z3[1]
y=m*x+b

最后我给出这运算的答案以供大家参考
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/579740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从企业级负载均衡到云原生,深入解读F5

上世纪九十年代,Internet快速发展催生了大量在线网站,Web访问量迅速提升。在互联网泡沫破灭前,这个领域基本是围绕如何对Web网站进行负载均衡与优化。从1997年F5发布了BIG-IP,到快速地形成完整ADC产品线,企业级负载均衡…

51单片机(STC8)-- 串口配置及串口重定向(printf)

文章目录 STC8串口概述串口寄存器配置串口1控制寄存器SCON串口1数据寄存器SBUF串口1模式 1工作方式串口1波特率计算方式 串口注意事项串口1通信demo串口重定向 STC8串口概述 由下图可知STC8H3K64S4带有4个4个串行通信接口,芯片名后两位S所带的数字即代表这款芯片带…

echarts自定义鼠标移上去显示,自定义图例,自定义x轴显示

提示:记录一下echarts常用配置,以免后期忘记 1.自定义鼠标移上去效果 tooltip: { show: true, trigger: "axis", axisPointer: { type: "shadow",//默认自定义效果 }, // //自定义鼠标移上去效果 formatter: (v) > { console.log("打印…

IDEA使用之打包Jar,指定main方法

前言 在某些场景,可能会遇到将非Spring项目打包的情况,我们不需要Tomcat服务器部署,只需要执行指定的main方法即可,这种情况打包成jar就比较方便了。 操作步骤 打包结果默认在项目的out目录下 使用 java -jar xxx.jar

Python 爬虫之下载歌曲(二)

获取深夜emo云歌单信息 文章目录 获取深夜emo云歌单信息前言一、基本流程二、代码编写1.基本要素代码2.获取歌名和链接信息3.获取歌曲的作者信息4.将上面三个列表遍历保存 三、效果展示 前言 换个平台,爬歌深夜网抑云平台的歌单的相关信息,关于作者、歌…

阿里云OpenSearch-LLM智能问答故障的一天

上周五使用阿里云开放搜索问答版时,故障了一整天,可能这个服务使用的人比较少,没有什么消息爆出来,特此记录下这几天的阿里云处理过程,不免让人怀疑阿里云整体都外包出去了,反应迟钝,水平业余&a…

【JavaWeb学习笔记】16 - JSon和Ajax

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/json https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/ajax 目录 〇、官方文档 一、JSon 1.JSon介绍 2.JSon快速入门 3.JSON对象和字符串对象转换 1.应用案例 2.注意事项和细节 …

html table可编辑表格数据实现删除

这里教大家使用纯html和js脚本结合实现删除表格数据 <!DOCTYPE html> <html> <head><style>table {border-collapse: collapse;width: 100%;}th, td {border: 1px solid black;padding: 8px;text-align: left;}</style> </head> <body…

人工智能_机器学习077_Kmeans聚类算法_亚洲国家队自动划分类别_3维可视化实现---人工智能工作笔记0117

然后我们上一节使用聚类算法对,2006年世界杯,2010年世界杯,2007年亚洲杯,足球队进行了自动类别划分,然后 这一节,我们使用代码对,聚类算法的划分结果,进行一下可视化 plt.figure(figsize=(12,9)) 首先指定画布大小 ax=plt.subplot(111,projection=3d) 然后指定111,表示画布的,…

Java之遍历树状菜单

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f5fc;专栏系列&#xff1a;无 &#x1f33c…

loTDB数据库学习笔记之初识 —— 筑梦之路

loTDB简介 IoTDB 是针对时间序列数据收集、存储与分析一体化的数据管理引擎。具有体量轻、性能高、易使用的特点&#xff0c;适用于工业物联网应用中海量时间序列数据高速写入和复杂分析查询的需求&#xff0c;同时包含数据订阅、数据同步、负载均衡和运维监控功能。 由清华大学…

pytorch中池化函数详解

1 池化概述 1.1 什么是池化 池化层是卷积神经网络中常用的一个组件&#xff0c;池化层经常用在卷积层后边&#xff0c;通过池化来降低卷积层输出的特征向量&#xff0c;避免出现过拟合的情况。池化的基本思想就是对不同位置的特征进行聚合统计。池化层主要是模仿人的视觉系统…

文件夹共享(普通共享和高级共享的区别)防火墙设置(包括了jdk安装和Tomcat)

文章目录 一、共享文件1.1为什么需要配置文件夹共享功能&#xff1f;1.2配置文件共享功能1.3高级共享和普通共享的区别&#xff1a; 二、防火墙设置2.1先要在虚拟机上安装JDK和Tomcat供外部访问。2.2设置防火墙&#xff1a; 一、共享文件 1.1为什么需要配置文件夹共享功能&…

华为---USG6000V防火墙web基本配置示例

目录 1. 实验要求 2. 配置思路 3. 网络拓扑图 4. USG6000V防火墙端口和各终端相关配置 5. 在USG6000V防火墙web管理界面创建区域和添加相应端口 6. 给USG6000V防火墙端口配置IP地址 7. 配置通行策略 8. 测试验证 8.1 逐个删除策略&#xff0c;再看各区域终端通信情况 …

2024年深度学习、计算机视觉与大模型面试题综述,六大专题数百道题目

DeepLearning-Interview-Awesome-2024 本项目涵盖了大模型(LLMs)专题、计算机视觉与感知算法专题、深度学习基础与框架专题、自动驾驶、智慧医疗等行业垂域专题、手撕项目代码专题、优异开源资源推荐专题共计6大专题模块。我们将持续整理汇总最新的面试题并详细解析这些题目&a…

解决 MacOS JD-GUI 打开失败的问题

JD-GUI下载地址&#xff1a;http://java-decompiler.github.io JD-GUI 是一款轻量级的 Java 反编译工具&#xff0c;对于一些没有源码的 Jar 包&#xff0c;直接拖进去就可以反编译源码&#xff0c;十分的方便。 在 MacOS 还是 Mojave 的时候&#xff0c;JD-GUI 使用一切正常…

负载均衡——Ribbon

文章目录 Ribbon和Eureka配合使用项目引入RibbonRestTemplate添加LoadBalanced注解注意自定义均衡方式代码注册方式配置方式 Ribbon脱离Eureka使用 Ribbon&#xff0c;Nexflix发布的负载均衡器&#xff0c;有助于控制HTTP和TCP客户端的行为。基于某种负载均衡算法&#xff08;轮…

线性代数基础【3】向量

第一节 向量的概念与运算 一、基本概念 ①向量 ②向量的模(长度) ③向量的单位化 ④向量的三则运算 ⑤向量的内积 二、向量运算的性质 (一)向量三则运算的性质 α β β αα (β γ) (α β) γk (α β) kα kβ(k l) α kα lα (二)向量内积运…

TypeScript前端学习(四)

前言 还是分享的笔记&#xff0c;大佬请绕行&#xff01; 一、类的定义和继承 console.log("----对象---"); var people {"name": "张三",syaHi() {console.log("HI,my name is " this.name);} } people.syaHi();console.log("…

使用poi将pptx文件转为图片详解

目录 项目需求 后端接口实现 1、引入poi依赖 2、代码编写 1、controller 2、service层 测试出现的bug 小结 项目需求 前端需要上传pptx文件&#xff0c;后端保存为图片&#xff0c;并将图片地址保存数据库&#xff0c;最后大屏展示时显示之前上传的pptx的图片。需求看上…