直线方程:
y=ax+by=ax+b y=ax+b
实验测试获得一组数据,记为:(xi,yi)(x_i, y_i)(xi​,yi​)
现需要根据测试数据,求直线方程参数a, b使得该直线最符合实验数据结果,即等价于问题:
mina,bΣ[yi−(axi+b)]2\underset{a, b}{min} \Sigma[y_i - (ax_i + b)]^2 a,bmin​Σ[yi​−(axi​+b)]2
记:
sum=Σ[yi−(axi+b)]2\Sigma[y_i - (ax_i + b)]^2Σ[yi​−(axi​+b)]2
对a, b求导:
dsumda=Σ{−2xi[yi−(axi+b)]}=0\frac{dsum}{da} = \Sigma\{-2x_i[y_i-(ax_i+b)]\} = 0 dadsum​=Σ{−2xi​[yi​−(axi​+b)]}=0
dsumdb=Σ{−2[yi−(axi+b)]}=0\frac{dsum}{db}=\Sigma\{-2[y_i-(ax_i+b)]\} = 0 dbdsum​=Σ{−2[yi​−(axi​+b)]}=0
从而解得:
a=nΣxiyi−ΣxiΣyinΣxi2−(Σxi)2a = \frac{n\Sigma x_iy_i - \Sigma x_i \Sigma y_i}{n\Sigma x_i^2 - (\Sigma x_i)^2} a=nΣxi2​−(Σxi​)2nΣxi​yi​−Σxi​Σyi​​
b=Σyi−aΣxinb = \frac{\Sigma y_i - a\Sigma x_i}{n} b=nΣyi​−aΣxi​​
其中,n为测试得到的数据总数。
当nΣxi2−(Σxi)2=0n\Sigma x_i^2 - (\Sigma x_i)^2=0nΣxi2​−(Σxi​)2=0时,直线斜率a为无求大,不存在,此时,直线方程为:
x=(Σxi)/nx = (\Sigma x_i) / n x=(Σxi​)/n

参考资料中对于a,b系数的结果弄反,故而重新梳理公式。

参考资料:
https://wenku.baidu.com/view/d4ede28a910ef12d2af9e7e1.html

直线拟合(最小二乘法)相关推荐

  1. 利用最小二乘法,用直线拟合点时,为什么计算竖直距离而非垂直距离?为什么在线性回归分析中,求的是距离平方和最小,而不是距离之和最小?

    我的理解是,直接求距离之和可能导致多个解存在的情况,而求距离平方和可以保证唯一解,参考: 当且仅当a=b时,不等式等号成立 参考文章:利用最小二乘法,用直线拟合5点时,为什么计算竖直距离而非垂直距离?

  2. 最小二乘法直线拟合汇总

    原文链接:https://www.jianshu.com/p/1c4f3edbaa47 首先最小二乘法是面对不连续的离散点. 它的本质是求某些参数,估计值在整体下可以使误差ε最小. 对于离散点的直线拟 ...

  3. 基于opencv的c++图像处理(霍夫直线检测与最小二乘法直线拟合)

    前言 基于opencv的c++接口,实现标准的霍夫直线检测.基于统计概率的霍夫直线检测.以及最小二乘法直线拟合. 相关的opencv接口解析 CV_EXPORTS_W void HoughLines( ...

  4. 最小二乘法-直线拟合-推荐方法

    1. 最小二乘法 首先举个例子. 针对线性最小二乘法即直线拟合,如下图(来自维基百科)所示: 根据已有的数据(图中的点),来做出一条最贴近数据发展趋势的直线. 通过这条直线,我们可以对未来的数据进行预 ...

  5. RANSAC算法做直线拟合

    RANSAC算法之前了解过相关的原理,这两天利用晚上闲暇的时间,看了一下RANSAC算法的Python代码实现,这方面的资料很多了,这里就不在重复.在分析该RANSAC.py代码之前,想用自己的对RA ...

  6. OpenCV | 直线拟合fitline函数(Python)

    简介 之前做直线拟合时,自己写了一个利用最小二乘做直线拟合的程序,但是由于直线检测的误差比较大,拟合的效果并不好.个人不知道是什么原因,因此想尝试更改一下直线拟合的算法,后来找到了OpenCV中的fi ...

  7. OpenCV—直线拟合fitLine

    本文的主要参考为官方文档OpenCV249-fitLine和博客-OpenCV 学习(直线拟合) 以及<Learning OpenCV 3>page425-426 OpenCV中提供的直线 ...

  8. OpenCV fitline直线拟合函数学习

    下图是OpenCV官方文档中,对直线拟合函数的详细介绍: fitLine()函数用于,对二维或三维空间中的点集进行直线拟合.共有六个参数: param 1:输入的点集,可以是Mat或者vector&l ...

  9. 【OpenCV】56 二值图像分析–直线拟合与极值点寻找

    56 二值图像分析–直线拟合与极值点寻找 代码 import cv2 as cv import numpy as npdef canny_demo(image):t = 80canny_output ...

  10. C++版本OpenCv教程(四十三)直线拟合

    前面介绍的函数都是寻找图像或者点集中是否存在直线,而有时我们明确已知获取到的数据在一条直线上,此时需要将所有数据拟合出一条直线,但是由于噪声的存在,这条直线可能不会通过大多数的数据,因此需要保证所有的 ...

最新文章

  1. GAN(Generative Adversarial Network,GAN)模型之:SeqGAN、IRGAN、StackGAN、BigBiGAN、GAIN模型
  2. 基于xfire发布web Service简单实例
  3. 地理空间数据库(Geodatabase)结构(翻译)
  4. 梯度下降法及其Python实现
  5. sap.ushell.Container.getService.done的设计思路
  6. 使用setsockopt()接口,设置TCP的接收与发送超时,Invalid argument错误问题
  7. 现在学前端还来得及吗?总听人说饱和了
  8. C#的dapper使用
  9. 中嵌套的页面如何操作父页面_UI设计中签到页面如何设计
  10. TCP Socket
  11. 计算机键盘无法使用 怎么办,电脑键盘失灵怎么办?4个小技巧解决电脑键盘失灵问题...
  12. 虚拟机服务器ip端口映射,VMware虚拟机配置端口转发(端口映射),实现远程访问【转】...
  13. java setvalue函数,Java JavaTuples setValue()用法及代码示例
  14. 智能手机查看上网IP地址的多种方法
  15. Unity3D总结记录(四) Unity中控制AudioSourse播放多条不同的声音文件
  16. [React网络整理]React之表单组件的学习笔记
  17. JAVA易医就医购药交互平台计算机毕业设计Mybatis+系统+数据库+调试部署
  18. BPM软件_财务报销流程管理解决方案_K2工作流引擎
  19. js长按删除_js模拟长按事件的实现方式
  20. C语言 详解如何编写闪烁显示字符串的函数

热门文章

  1. 【C语言】C语言标准库大梳理(超全)
  2. suricata中DPDK收发包源码分析2
  3. Nginx负载均衡的原理
  4. Bezier曲线 OpenCV
  5. 程序猿同城对调要学会对自己的工作进行总结
  6. 【算法】 算法和数据结构绪论
  7. 关于nwjs中编译sqlite3的记录
  8. esp8266 深度睡眠初探
  9. c语言购买游戏币文件夹设置,金币银币问题
  10. 阶乘函数的解析延拓——伽马函数