趣学python3(38)--多项式最小二乘法拟合
生活随笔
收集整理的這篇文章主要介紹了
趣学python3(38)--多项式最小二乘法拟合
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
class numpy.poly1d(c_or_r, r=False, variable=None)[source]
參數:
c_or_r:array_like
多項式的系數,或者如果第二個參數的值是True,多項式的根(值多項式的求值結果為0)。
例如,poly1d([1, 2, 3])返回一個對象,代表:
x ^ 2 + 2 + 3,
而poly1d((1、2、3),真正的)返回一個對象,代表:
(x - 1) (x - 2) (3) = x ^ 3 - 6 x ^ 2 + 11 * 6。
r: bool,可選
如果為真,c_or_r指定多項式的根;默認值為False。
variable:str,可選
將打印p時使用的變量從x改為變量
python3-多項式最小二乘法擬合
import numpy as np import scipy as sp import pylab as pl from scipy.optimize import leastsq#最小二乘法函數n=9#多項式次數#目標函數 def real_func(x):return np.pi*(np.sin(x)+np.cos(x))#pi*(sinx+cosx) #多項式函數 def fit_func(p,x):f=np.poly1d(p)return f(x) #殘差函數 def residuals_func(p,y,x):ret=fit_func(p,x)-yreturn retx=np.linspace(0,1,20)#隨機選擇20個點作為x y_=real_func(x) y=[np.random.normal(0,0.1)+y for y in y_]#人為增加噪聲x_=np.linspace(0,1,1000)p_init=np.random.randn(n)#初始參數值 plsq=leastsq(residuals_func,p_init,args=(y,x))#最小二乘法 print("參數:",plsq[0]) pl.plot(x_,real_func(x_),label="real") pl.plot(x_,fit_func(plsq[0],x_),label="fitted curve") pl.plot(x,y,'bo',label='with noise') pl.legend() pl.show() 參數: [ 5.66429153e+02 -2.31267133e+03 3.74497872e+03 -3.05872688e+03 1.32282723e+03 -2.91138157e+02 2.74425970e+01 1.90086912e+00 3.15467158e+00]總結
以上是生活随笔為你收集整理的趣学python3(38)--多项式最小二乘法拟合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你真的知道什么是多线程吗?为什么要学习多
- 下一篇: Vue-cli项目中路由的基础用法,以及