利用leastsq()函数对数据进行最小二乘算法拟合。
先来看个简单的线性的例子:
#假设要拟合的数据点(xdata,ydata)如下
import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt
xdata=np.array([8.19,2.72,6.39,8.71,4.7,2.66,3.78])
ydata=np.array([7.01,2.78,6.47,6.71,4.1,4.23,4.05])
#先作图看下大概的(xdata,ydata)的形状
plt.plot(xdata, ydata, 'b.', label='data')
#plt.show()
#可得形状如下
#通过散点(xdata,ydata)的形状,可使用线性函数y=k*x+b来拟合数据点。首先定义残差函数y-f(x)
def residual(p):
k,b=p
return ydata-(k*xdata+b)
result=optimize.leastsq(residual,[0,0])
#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, e