第一章 常用最小二乘法曲线拟合算法
前言
最小二乘法在统计学的地位不必多言。本文的目的是全面地讲解最小二乘法,打好机器学习的基础。下面几章详细介绍应用及源代码。
一、最小二乘法是什么?
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。
二、使用步骤
1.源代码直接上
/***********************************
//函数:FitCurve_R2(uint8_t m)
//功能:拟合曲线
//内容:拟合第二步计算KB系数
// m为阶数
************************************/
/***********************************
//函数:FitCurve_Sum(uint8_t m, uint16_t start_num为,uint16_t end_num为,double *x,double *y)
//功能:拟合曲线
//内容:计算拟合用矩阵参数
// m为阶数,start_num为起始数,end_num为终止数
// x为横轴数组,y为纵轴数组(x与y一一对应)
************************************/
static void FitCurve_Sum(uint8_t m, uint16_t start_num,uint16_t end_num,double *x,double *y)
{
uint16_t i,k;
uint8_t j;
double temp;
//求X[]矩阵
for(i=0;i<=m;i++)
{
for(j=i;j<=m;j++)
{
temp=0;
//X轴为数组
for(k=start_num;k<end_num;k++)
temp=temp+pow(x[k],(i+j));
FitCurve.X_X[i].Y[j]=temp;
FitCurve.X_X[j].Y[i]=FitCurve.X_X[i].Y[j];
}
}
//求Y[]矩阵
for(i=0;i<=m;i++)
{
temp=0;
for(k=start_num;k<end_num;k++)
te