numpy多項式擬合函數(shù)polyfit的使用方法代碼
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)造多項式
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為多項式的次數(shù)+1,w為權(quán)重。權(quán)重的含義是這個數(shù)據(jù)點的誤差要乘以權(quán)重,低點給予高權(quán)重可以減少低點的誤差,避免低點的相對誤差過大。
自定義函數(shù)fit(x,y,m,w)的返回值 (xishu,r2,yfit)分別為系數(shù)、相關(guān)系數(shù)、擬合Y值。
過原點也可以通過權(quán)重實現(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多項式擬合函數(shù)polyfit使用的文章就介紹到這了,更多相關(guān)numpy多項式擬合函數(shù)polyfi內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python定時采集攝像頭圖像上傳ftp服務(wù)器功能實現(xiàn)
本文程序?qū)崿F(xiàn)python定時采集攝像頭圖像上傳ftp服務(wù)器功能,大家參考使用吧2013-12-12
Python使用pynlpir進(jìn)行中文分詞并保留段落信息
nlpir是由張華平博士開發(fā)的中文自然處理工具,可以對中文文本進(jìn)行分詞、聚類分析等,本文主要介紹了使用pynlpir進(jìn)行中文分詞并保留段落信息的具體方法,希望對大家有所幫助2024-03-03
一小時學(xué)會TensorFlow2之大幅提高模型準(zhǔn)確率
這篇文章主要介紹了TensorFlow2之大幅提高模型準(zhǔn)確率,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
Python利用PyMuPDF實現(xiàn)PDF文件處理
PyMuPDF是MuPDF的Python綁定-“輕量級PDF和XPS查看器”。本文將利用PyMuPDF實現(xiàn)PDF的一些基本操作,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-05-05
Python實現(xiàn)定時精度可調(diào)節(jié)的定時器
這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)定時精度可調(diào)節(jié)的定時器,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04

