计算方法——数据拟合

1、引入:单变量数据拟合

原先的插值要求给出的数据点要在拟合的函数上,但数据拟合,只需整体“近似”,不强求所有的数据点一致

假设给出数据:

那么 偏差 的定义为:

        \delta_i = f(x_i)-F(x_i)

但是偏差“大小”,最好是用绝对值表示,因此,运算时将拟合函数和被拟合函数之间的偏差表示为:

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \sum_{i=0}^{n}(f(x_i)-F(x_i))^2

对于单变量数据:上述x_i是一个标量

设拟合函数为:F(x) = a+bx

那么偏差值 = \sum_{i=1}^{8}(y_i-a-bx_i)^2

要使偏差值最小,求解目标是a和b,则用偏差值(函数)对a和b求偏导

设偏差值函数为 \varphi(a,b) = \sum_{i=1}^{8}(y_i-a-bx_i)^2

\frac{ \partial \varphi(a,b)}{\partial a} = -2\sum_{i=1}^{8}(y_i-a-bx_i)

\frac{ \partial \varphi(a,b)}{\partial b} = -2\sum_{i=1}^{8}(y_i-a-bx_i)x_i

令偏导等于0,那么就能得到两个方程,足以解两个未知数

2、多变量数据拟合

基本的求解思路:求偏差函数——求偏导——解方程 已经通过上述内容展示过了,对于多变量数据我们考虑的情况是:

x_i 不是一个标量而是一个向量,也就是说对于被拟合的原函数,它有若干个自变量

可以设拟合函数为 F(x_1,x_2,..,x_n) 【注意:这里的x_1,x_2,..,x_n 不是一个一个的数据点,而是一个数据x向量的x1坐标,x2坐标,...,xn坐标】

给定数据表格:

我们假设表中数据呈线性关系[这里指的是y和x],则可以设

        ​​​​​​​        F(x_1,x_2,..,x_k) = a_0+a_1x_1+a_2x_2+...+a_kx_k

依旧求偏差:

然后求偏导,具体偏导求解不再展开,因为下文要介绍更为简单、便于【计算机】计算的矩阵形式

2、矩阵形式

1)知识准备

参考:矩阵的四大基础子空间 - 知乎 (zhihu.com)

a) 矩阵四个基本子空间

对于一个矩阵A:

列空间(C(A)): 假设存在x,使得Ax = b,那么b属于A的列空间

零空间 :所有满足Ax = 0的向量x的集合就称之为矩阵A的零空间

行空间(R(A)):假设存在x,使得A^{T}x = b ,那么b属于R(A)

左零空间 :所有满足yA^T = 0的向量y的集合,称为矩阵A的左零空间,记为N(A^T)

b) 四空间的正交关系

正交的定义:两个向量的点积为零,那么这两个向量是正交的

空间正交的定义:如果两个空间中的任意的两个向量是正交的,则这两个空间的正交的

四空间的正交关系

  •        列空间与左零空间正交
  •        行空间与零空间正交

2)数据拟合的矩阵形式

对 F(x_0,x_1,..,x_k) = a_0+a_1x_1+...+a_kx_k

可以改写为矩阵:

A = \begin{bmatrix} 1, x_{11} ,x_{12},...,x_{1k}\\ 1, x_{21} ,x_{22},...,x_{2k}\\ ...,,...,...,...,...\\ 1, x_{n1} ,x_{n2},...,x_{nk} \end{bmatrix}

x = \begin{bmatrix} a_0\\ a_1\\ ... \\ a_k \end{bmatrix}

b = \begin{bmatrix} y_1\\ y_2\\ ..\\ y_k \end{bmatrix}

原函数为 Ax = b :

代入真实的数据点(以表3-2的数据为例子),那么各个矩阵结果为:

A = \begin{bmatrix} 1&-1 \\ 1&0 \\ 1& 1\\ 1& 2\\ 1& 3\\ 1& 4\\ 1& 5\\ 1&6 \end{bmatrix} x = \begin{bmatrix} a_0\\ a_1 \end{bmatrix} b = \begin{bmatrix} 10\\ 9\\ 7\\ 5\\ 4\\ 3\\ 0\\ -1 \end{bmatrix}

对于Ax = b

若有解,那么偏差应该是0,所有的数据点都被拟合到了

若无解,那么要考虑使得偏差最小的向量x

偏差的表达式 = Ax-b

使得偏差的模长最小,即\min ||Ax-b||_2^2,求导:

\frac{\partial f(x)}{\partial x} = \frac{\partial ||Ax-b||_2^2}{\partial x} = 2A^T(Ax-b)

则要使偏差模长最小,就要令 A^T(Ax-b) = 0

2)编程测一下

例题:

import numpy as npdef createA_b(X,Y):n = len(X)dim = len(X[0])+1A = np.ones(shape=(n,dim))b = np.zeros(shape=(n,1))for row in range(n):b[row][0] = Y[row]for i in range(1,dim):A[row][i] = X[row][i-1]return A,b# A^Ttmp = 0 算tmp
def cal_Right(A):s = A.shape[0]Zero = np.zeros(shape=(s,1))x,_,_,_ = np.linalg.lstsq(A,Zero,rcond=None)return xX = [[1,1],[1,2],[2,1],[2,2],[2,3]]
Y = [7,9,10,11,12]
A,b = createA_b(X,Y)# 使用最小二乘法求解 Ax = b(不要求方阵)
Ax_b = cal_Right(A.T)
x,residuals,_,_ = np.linalg.lstsq(A,b+Ax_b,rcond=None)print("解向量 x:\n", x)
print("残差平方和:", residuals)

结果:

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

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

相关文章

计算机网络:数据交换方式

计算机网络:数据交换方式 电路交换分组交换报文交换传输对比 本博客介绍计算机之间数据交换的三种方式,分别是电路交换、分组交换以及报文交换。 电路交换 我们首先来看电路交换,在电话问世后不久,人们就发现要让所有的电话机都…

c++类和对象(中)类的6个默认成员函数及const成员函数

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 今日主菜:类和对象 主厨:邪王真眼 所属专栏:c专栏 主厨的主页:Chef‘s blog 前言: 咱们之前也是…

【开发环境搭建篇】IDEA安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

C语言——结构体自定义类型

目录 结构体类型 声明结构体 结构体的特殊声明 创建结构体变量和初始化结构体变量 结构体的自引用 结构体内存对齐 对齐规则 内存对齐存在意义 默认对齐数的修改 结构体传参 结构体实现位段 了解位段是什么 位段的内存分配 位段有跨平台的问题及使用注意事项 C语言…

Spark-Scala语言实战(3)

在之前的文章中,我们学习了如何在来如何在IDEA离线和在线安装Scala,想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实…

[Halcon学习笔记]标定常用的Halcon标定板规格及说明

1、介绍 大多数标定的要求都是以实心圆或方格来作为标志点,所以一般的标定板为棋盘格或矩阵圆点图,高精度的相机标定过程中,大多是以比较明确的特征点来作为参考,所以通过识别标定板的圆形,拟合出精确的中心位置&…

3.19总结

A计划 题解&#xff1a;这题其实就是一个很简单的三维搜索&#xff0c;有了一个传送门&#xff0c;并且要确定是否传过去的对应位置是墙&#xff0c;防止被装死&#xff0c;同事呢又要在对应的t时间内完成&#xff08;不一定要卡着t时间恰好完成&#xff09; #include<ios…

linux单机部署hadoop

1.下载安装包 https://archive.apache.org/dist/hadoop/common/ 2.上传压缩 3.修改配置文件 1)设置JDK的路径 cd /usr/local/software/hadoop-3.1.3/etc/hadoop vi hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64/ 查看…

1Panel应用推荐:Nginx Proxy Manager

1Panel&#xff08;github.com/1Panel-dev/1Panel&#xff09;是一款现代化、开源的Linux服务器运维管理面板&#xff0c;它致力于通过开源的方式&#xff0c;帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用&#xff0c;1Panel特别开通应用商店&am…

springBoot---过滤器,监听器,拦截器

过滤器&#xff0c;监听器&#xff0c;拦截器 一、理解它们 看里十几篇博客&#xff0c;总算有点小明白&#xff0c;总的来讲&#xff0c;两张图可以让我看明白点。 通过两幅图我们可以理解拦截器和过滤器的特点 1、过滤器 过滤器是在请求进入tomcat容器后&#xff0c;但请求…

2024流星全自动网页生成系统重构版源码

2024流星全自动网页生成系统重构版源码 源码介绍 流星全自动网页生成系统重构版源码分享&#xff0c;所有模板经过精心审核与修改&#xff0c;完美兼容小屏手机大屏手机&#xff0c;以及各种平板端、电脑端和360浏览器、谷歌浏览器、火狐浏览器等等各大浏览器显示。 为用户使…

【第十五章】改进神经网络学习方式-手写数字识别重新编码实现

让我们来实现我们在之前讨论过的想法。我们将开发一个新的程序&#xff0c;network2.py&#xff0c;这是我们之前开发的程序 network.py 的改进版本。如果你有一段时间没有看过 network.py&#xff0c;那么花几分钟快速阅读之前的讨论可能会有所帮助。它只有 74 行代码&#xf…

44.for语句

目录 一.什么是for语句 二.语法格式 三.举例 四.视频教程 一.什么是for语句 C语言中除了while和do while循环语句&#xff0c;还有for循环语句&#xff0c;所以for语句也是循环语句。 二.语法格式 for&#xff08;表达式1&#xff1b;表达式2&#xff1b;表达式3&#xf…

8.python中的元组

8.python中的元组 虽然说元组用的不是很多&#xff0c;但是还是讲一下。元组其实可以看为是一个列表&#xff0c;不可变的列表。操作和列表都差不多。 元组&#xff08;tuple&#xff09;是Python中的一种基本数据结构类型&#xff0c;它是不可变的序列&#xff0c;意味着一旦…

【爬虫】实战-爬取Boss直聘信息数据

专栏文章索引&#xff1a;爬虫 所用工具&#xff1a; 自动化工具&#xff1a;DrissionPage 目录 一、找到目标数据(2个确定)​ 1.确定目标网页 2.确定目标网址 二、编写代码​ 三、查看数据​ 五、总结 一、找到目标数据(2个确定) 1.确定目标网页 打开目标网站 网站&am…

DolphinScheduler运维-页面加载缓慢

一、问题描述 DolphinScheduler调度平台的UI界面加载缓慢,项目中的任务实例加载时间过长,需要解决这个问题,提高DolphinScheduler平台UI页面的加载速度。 二、原因分析 经过分析发现,任务实例过多是导致UI加载缓慢的主要原因。由于任务实例无法直接删除,根据文档了解到需…

狼人杀 魔镜少女 个人玩法理解

最近出来的新板子 (魔镜少女 觉醒隐狼) 确实是非常的好玩 先来说说板子身份 好人阵营: 神职牌有 魔镜少女 女巫 猎人 守卫 民牌有: 四个普通平民 狼人阵营: 觉醒隐狼 四个普通小狼人 先来说说技能 魔镜少女每晚可以翻拍查验一名玩家的具体身份&#xff0c;注意 是具体身份 就…

网络架构层_交换机连接使用

网络架构层_交换机连接使用 交换机是不是不会用呀&#xff1f;交换机&#xff0c;服务器&#xff0c;路由器&#xff0c;防火墙&#xff0c;网关&#xff0c;这些都是嘛呀&#xff1f; 网上的一些网络架构图&#xff0c;具体项目按照实际考虑。 交换机的Console口——通过Con…

c语言指针(二)

c语言指针&#xff08;二&#xff09; 1.数组名的理解 2.使用指针访问数组 3.一维数组的传参本质 1.数组名的理解 int arr[10] { 1,2,3,4,5,6,7,8,9,10 }; int* p &arr[0]这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址&#xff0c;但是其实数组名本来就是…

【链表】Leetcode 142. 环形链表 II【中等】

环形链表 II 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系…