python最小二乘线性回归(Python做线性回归)
怎么用Python将图像边界用最小二乘法拟合成曲线
本文实例讲述了Python基于最小二乘法实现曲线拟合。分享给大家供大家参考,具体如下:
这里不手动实现最小二乘,调用scipy库中实现好的相关优化函数。
考虑如下的含有4个参数的函数式:
123456789101112131415
importnumpyasnpfromscipyimportoptimizeimportmatplotlib.pyplotaspltdeflogistic4(x,A,B,C,D):return(A-D)/(1+(x/C)**B)+Ddefresiduals(p,y,x):A,B,C,D=preturny-logisctic4(x,A,B,C,D)defpeval(x,p):A,B,C,D=preturnlogistic4(x,A,B,C,D)A,B,C,D=.5,2.5,8,7.3x=np.linspace(0,20,20)y_true=logistic4(x,A,B,C,D)y_meas=y_true+0.2*np.random.randn(len(y_true))
调用工具箱函数,进行优化
p0=[1/2]*4plesq=optimize.leastsq(residuals,p0,args=(y_meas,x))#leastsq函数的功能其实是根据误差(y_meas-y_true)#估计模型(也即函数)的参数
12345678
plt.figure(figsize=(6,4.5))plt.plot(x,peval(x,plesq[0]),x,y_meas,’o’,x,y_true)plt.legend([‘Fit’,’Noisy’,’True’],loc=’upperleft’)plt.title(‘leastsquareforthenoisydata(measurements)’)fori,(param,true,est)inenumerate(zip(‘ABCD’,[A,B,C,D],plesq[0])):plt.text(11,2-i*.5,’{}={:.2f},est({:.2f})={:.2f}‘.format(param,true,param,est))plt.savefig(‘./logisitic.png’)plt.show()
希望本文所述对大家Python程序设计有所帮助。
可不可以把图片上的曲线拟合出来
还没有评论,来说两句吧...