码迷,mamicode.com
首页 > 其他好文 > 详细

最小二乘拟合

时间:2018-04-02 10:08:40      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:ret   img   class   a*   误差   个数   .net   sci   tps   

来自:某小皮

最优化函数库Optimization

优化是找到最小值或等式的数值解的问题。scipy.optimization子模块提供函数最小值,曲线拟合和寻找等式的跟的有用算法。

最小二乘拟合

假设有一组实验数据(xi, yi),事先知道它们之间应该满足某函数关系yi = f(xi),通过这些已知的信息,需要确定函数f的一些参数。例如,如果函数f是线性函数f(x) = kx + b,那么参数k和b就是需要确定的值。

如果用p表示函数中需要确定的参数,那么目标就是找到一组p,使下面的函数s的值最小:

技术分享图片

这种算法被称作最小二乘拟合(Least-square fitting)。

使用leastsq()进行最小二乘拟合计算。leastsq()只需要将计算误差的函数和待确定参数的初始值传递给它即可。

Leastsq()函数传入误差计算函数和初始值,该初始值将作为误差计算函数的第一个参数传入;

计算的结果r是一个包含两个元素的元组,第一个元素是一个数组,表示拟合后的参数k,b;第二个元素如果等于1,2,3,4中的其中一个整数,则拟合成功,否则将返回mesg。

示例:

使用最小二乘对带噪声的正弦波数据进行拟合:

拟合得到的参数虽然和实际的参数有可能完全不同,但是由于正弦函数具有周期性,实际上拟合的结果和实际的函数是一致的。

import numpy as np
from scipy.optimize import leastsq

def func(x, p):
    

数据拟合所用的函数:A*sin(2*pi*k*x + theta)

A, k, theta = p
return A*np.sin(2*np.pi*k*x + theta)

def residuals(p, y, x):

 

实验数据x, y和拟合函数之间的误差,p为拟合需要找到的系数

 

最小二乘拟合

标签:ret   img   class   a*   误差   个数   .net   sci   tps   

原文地址:https://www.cnblogs.com/keye/p/8690183.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!