欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

numpy多項(xiàng)式擬合函數(shù)polyfit的使用方法代碼

 更新時(shí)間:2024年01月23日 15:02:42   作者:馬紅權(quán)  
這篇文章主要給大家介紹了關(guān)于numpy多項(xiàng)式擬合函數(shù)polyfit的使用方法,np.polyfit是Numpy庫(kù)中的一個(gè)函數(shù),用于在最小二乘意義下擬合多項(xiàng)式曲線到數(shù)據(jù)點(diǎn)集,需要的朋友可以參考下
import numpy as np
def fit(x,y,m,w):
    if len(x)<=m:
        return False
    xishu = np.polyfit(x,y,m,w=w)
    p = np.poly1d(xishu) # 構(gòu)造多項(xiàng)式
    yfit = p(x) # 擬合的y值
    yresid = y - yfit # 殘差
    SSresid = sum(pow(yresid, 2)) # 殘差平方和
    SStotal = len(y) * np.var(y) # 總體平均方差
    if SStotal==0:#水平線
        r2=1
    else:
        r2 = 1 - SSresid/SStotal # 擬合優(yōu)度    
    return (xishu,r2,yfit)
if __name__=="__main__":
    x = np.arange(0,5,0.1)
    z = [2+3*x+4*x**2 for x in x]
    y = np.array([np.random.normal(z,3) for z in z])
    weight=[1 for one in x]
    print(fit(x,y,2,weight))

polyfit(x,y,m,w) 參數(shù)m為多項(xiàng)式的次數(shù)+1,w為權(quán)重。權(quán)重的含義是這個(gè)數(shù)據(jù)點(diǎn)的誤差要乘以權(quán)重,低點(diǎn)給予高權(quán)重可以減少低點(diǎn)的誤差,避免低點(diǎn)的相對(duì)誤差過(guò)大。

自定義函數(shù)fit(x,y,m,w)的返回值 (xishu,r2,yfit)分別為系數(shù)、相關(guān)系數(shù)、擬合Y值。

過(guò)原點(diǎn)也可以通過(guò)權(quán)重實(shí)現(xiàn)。代碼如下:

if must00:
    x=np.append(x,0)#.append(0)
    y=np.append(y,0)#y.append(0)
    w=np.append(w,100000000)#.append(10000)
fit_r=fit(x,y,m,w)
if fit_r:
    (xishu,r,y_fitted)=fit_r
else:
    #fit error
    xishu=[0,1,0]
    y_fitted=x 
    r=0

總結(jié) 

到此這篇關(guān)于numpy多項(xiàng)式擬合函數(shù)polyfit使用的文章就介紹到這了,更多相關(guān)numpy多項(xiàng)式擬合函數(shù)polyfi內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論