最小二乘法是一种数学统计方法,它通过最小化误差的平方和来寻找数据的最佳函数匹配。具体来说,它用于解决曲线拟合问题,即找到一个函数,使得该函数在给定数据点上的误差(通常是垂直距离)的平方和最小。这种方法广泛应用于数据分析和机器学习等领域,特别是在处理线性回归问题时,最小二乘法是一种非常有效且常用的方法。
假设已知有N个点,设这条直线方程为: y = a·x + b
其中,a和b的计算公式如下:
推导过程见:最小二乘法公式_百度百科 (baidu.com)
算法代码如下:
//------------------------------------------------------------- //功能 : 最小二乘法直线拟合 y = a·x + b, 计算系数a 和 b //参数 : x -- 横坐标的数组 // y -- 纵坐标的数组 // num 是数组包含的元素个数,x[]和y[]的元素个数必须相等 // a,b 都是返回值 //返回 : //------------------------------------------------------------- void leastSquareLinearFit(float x[], float y[], int num, float *a, float *b) {float sum_x2 = 0.0;float sum_y = 0.0;float sum_x = 0.0;float sum_xy = 0.0;for (int i = 0; i < num; i++){sum_x2 += x[i] * x[i];sum_y += y[i];sum_x += x[i];sum_xy += x[i] * y[i];}*a = (num * sum_xy - sum_x * sum_y) / (num * sum_x2 - sum_x * sum_x);*b = (sum_x2 * sum_y - sum_x * sum_xy) / (num * sum_x2 - sum_x * sum_x); }
参考博文:最小二乘法-直线拟合-C代码实现_用最小二乘法拟合直线方程-CSDN博客