讲解线性函数的定义 非线性函数的性质( 二 )


对于多变量线性最小二乘问题,设拟合函数为直线 f ( x ) = p 0p 1 ? x 1?p m ? x m ,类似地,可以解出系数 p 0 , p 1 , ? p m。
对于非线性函数的拟合问题,通常也是按照最小二乘法的思路,求解上述误差平方和最小化这个非线性优化问题,常用的具体算法有搜索算法和迭代算法两类 。
1.3 Python 数据拟合方法 数据拟合是常用算法,Python 语言的很多工具包都提供了数据拟合方法,常用的如 Scipy、Numpy、Statsmodel、Scikit-learn 工具包都带有数据拟合的函数与应用 。
Scipy 是最常用的 Python 工具包,本系列中非线性规划、插值方法也都是使用 Scipy 工具包实现,因此仍以 Scipy 工具包讲解数据拟合问题 。
Scipy 工具包对于不同类型的数据拟合问题,提供了不同的函数或类 。由于 Scipy 工具包是多个团队合作完成,而且经过了不断更新,因此调用不同函数和方法时的函数定义和参数设置有所差异,往往使小白感到困惑 。
本文对单变量、多变量线性最小二乘拟合,指数函数、多项式函数、样条函数的非线性拟合,单变量、多变量的自定义函数拟合问题进行分析、给出完整例程和结果,数据拟合从此无忧 。
2. 线性最小二乘拟合 2.1 线性最小二乘拟合函数说明 线性最小二乘拟合是最简单和最常用的拟合方法 。scipy.optimize 工具箱中的 leastsq()、lsq_linear(),scipy.stats 工具箱中的 linregress(),都可以实现线性最小二乘拟合 。
2.1.1 scipy.optimize.leastsq 函数说明 leastsq() 根据观测数据进行最小二乘拟合计算,只需要观测值与拟合函数值的误差函数和待定参数 的初值,返回拟合函数中的待定参数 ( p 1 , ? p m ) ,但不能提供参数估计的统计信息 。leastsq() 可以进行单变量或多变量线性最小二乘拟合,对变量进行预处理后也可以进行多项式函数拟合 。
scipy.optimize.leastsq(func, x0, args=(), Dfun=None, full_output=0, col_deriv=0, ftol=1.49012e-08, xtol=1.49012e-08, gtol=0.0, maxfev=0, epsfcn=None, factor=100, diag=None)
主要参数:
func:可调用的函数,描述拟合函数的函数值与观测值的误差,形式为 error(p,x,y),具有一个或多个待定参数 p 。误差函数的参数必须按照 (p,x,y) 的顺序排列,不能改变 。x0:一维数组,待定参数 ( p 1 , ? p m ) 的初值 。args:元组,线性拟合时提供观测数据值 (xdata, ydata),观测数据 xdata 可以是一维数组(单变量问题),也可以是多维数组(多变量问题) 。【讲解线性函数的定义 非线性函数的性质】返回值:
x:一维数组,待定参数 ( p 1 , ? p m )的最小二乘估计值 。2.1.2 scipy.stats.linregress 函数说明 linregress() 根据两组观测数据 (x,y) 进行线性最小二乘回归,不仅返回拟合函数中的待定参数 ( p 1 , p 1 ),而且可以提供参数估计的各种统计信息,但只能进行单变量线性拟合 。

猜你喜欢