1. 最小二乘法
首先举个例子。

针对线性最小二乘法即直线拟合,如下图(来自维基百科)所示:

根据已有的数据(图中的点),来做出一条最贴近数据发展趋势的直线。

通过这条直线,我们可以对未来的数据进行预测,因为基本会落在这条直线附近。

当然了,最小二乘法不只是直线,还可以是曲线,本文不讨论。

2. 求解直线方程

我们现在要做的,就是求解直线方程。

假设已知有N个点,设这条直线方程为:  y = a·x + b

其中,a和b的计算公式如下:

3. 算法代码
#define DEFAULT_EPS 1e-15
 
 
STATUS LeastSquareLinearFit(double *x, double *y, const int num, double *a, double *b)
{
    int i = 0;
    double denominator = 0.0;
    double sum_xsquared = 0.0;
    double sum_y = 0.0;
    double sum_x = 0.0;
    double sum_xy = 0.0;
 
 
    for (i = 0; i < num; ++i)
    {
        sum_xsquared += x[i] * x[i];
        sum_y += y[i];
        sum_x += x[i];
        sum_xy += x[i] * y[i];
    }
 
 
    denominator = (num * sum_xsquared - sum_x * sum_x);
    if ( fabs(denominator) <= DEFAULT_EPS )
    {
        return -1;
    }
    *a = (num * sum_xy - sum_x * sum_y) / denominator;
    *b = (sum_xsquared * sum_y - sum_x * sum_xy) / denominator;
 
 
    return 0;
}

最小二乘法-直线拟合-推荐方法相关推荐

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

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

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

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

  3. 最小二乘法直线拟合及其Matlab实现

    最小二乘法,通常用在我们已知数学模型,但是不知道模型参数的情况下,通过实测数据,计算数学模型,例如,在题目中,数学模型就是直线方程y=ax+b,但是不知道直线方程的a和b. 本来呢,我们只需要两组(x ...

  4. 最小二乘法直线拟合c语言代码,最小二乘法拟合一条直线(C语言代码)

    最小二乘法拟合一条直线(C语言代码) #include #define N 9 //N为要拟合的数据的个数 float X[9] = {1,1.477,1.778,2,2.176,2.301,2.39 ...

  5. 最小二乘法、加权最小二乘法——直线拟合

    对多篇最小二乘法相关的资料的整合,如有错误,敬请指正! 原文地址1 原文地址2 线性回归 线性回归假设数据集中特征与结果存在着线性关系: y = m x + c y = mx+c y=mx+c y为结 ...

  6. 最小二乘法直线拟合计算

    说明 最小二乘法(又称最小平方法)是一种数学优化技术.它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小 . ...

  7. 最小二乘法直线拟合、圆拟合

  8. RANSAC算法实现 + 直线拟合

    一.RANSAC算法 1.参考资料 [1]题目来源与解析:商汤科技SLAM算法岗的RANSAC编程题 [2]牛客网题目:[编程题]线性回归 [3]牛客网解答参考:商汤科技某算法岗的编程题有点过分了啊 ...

  9. 二维直线拟合--opencv实现

    二维/三维直线拟合–opencv实现 ​ Hough变换可以提取图像中的直线,但是提取线的精度不高,然而我们的很多场合下需要精确估计直线的参数,这时就需要进行直线拟合. ​ 直线拟合的方法有很多,比如 ...

最新文章

  1. bzoj 1233: [Usaco2009Open]干草堆tower【dp+单调栈】
  2. Linux内核探讨-- 第六章
  3. 弗林斯传输公式、天线温度
  4. LeetCode 532. K-diff Pairs in an Array
  5. chrome浏览器导出书签 如何导入收藏夹
  6. 高级定价基本概念理解
  7. socket 函数 setsockopt()用法
  8. 强化学习进阶【逆强化学习】
  9. 2021数学建模B题 空气质量二次模型
  10. C++程序设计谭浩强 全部习题答案
  11. 抖音:时间熔炉的诞生
  12. POJ 3744 Scout YYF I:概率dp
  13. c语言加权成绩,[求助]写了一个计算加权平均分的程序,总是报错。大神啊~
  14. Android studio 模拟器启动黑屏解决办法
  15. 机械零件委托加工合同
  16. Spark 应用开发程序
  17. 电子采购:制造业的“救星”
  18. 1w存银行一年多少利息_500万、1000万存银行一年有多少钱利息?能靠利息生活吗?...
  19. java job定时任务_java实现job功能,定时开启任务
  20. Python 实例教学_ 03_列表

热门文章

  1. IDEA中的MyBatis插件
  2. C语言取整(含强制转换)
  3. Command--Windows
  4. mysql优化1001mysql优化_mysql优化之基础规范
  5. 轮播swiper中加视频video滑动不顺畅报错 property on ‘HTMLMediaElement‘: The provided double value is non-finite.
  6. 3.2 使用STC89C52控制MC20发送短信
  7. 德国语言C1注册入学,德国留学需要通过哪些语言考试
  8. warning: CALF wilL be replaced by LF in xxxx 问题解决办法
  9. 基于空间的图卷积网络和基于谱的图卷积网络(spectral-based GCN and spatial-based GCN)
  10. 区块链相关名词解释汇总