成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

python函數(shù)擬合誤差 python擬合曲線誤差分析

如何用Python進(jìn)行線性回歸以及誤差分析

線性回歸:

成都創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、薩爾圖網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為薩爾圖等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

設(shè)x,y分別為一組數(shù)據(jù),代碼如下

import matplotlib.pyplot as plt

import numpy as np

ro=np.polyfit(x,y,deg=1) #deg為擬合的多項(xiàng)式的次數(shù)(線性回歸就選1)

ry=np.polyval(ro,x) #忘記x和ro哪個(gè)在前哪個(gè)在后了。。。

print ro #輸出的第一個(gè)數(shù)是斜率k,第二個(gè)數(shù)是縱截距b

plt.scatter(x,y)

plt.plot(x,ry)

Python最小二乘法擬合與作圖

在函數(shù)擬合中,如果用p表示函數(shù)中需要確定的參數(shù),那么目標(biāo)就是找到一組p,使得下面函數(shù)S的值最小:

這種算法稱為最小二乘法擬合。Python的Scipy數(shù)值計(jì)算庫中的optimize模塊提供了 leastsq() 函數(shù),可以對(duì)數(shù)據(jù)進(jìn)行最小二乘擬合計(jì)算。

此處利用該函數(shù)對(duì)一段弧線使用圓方程進(jìn)行了擬合,并通過Matplotlib模塊進(jìn)行了作圖,程序內(nèi)容如下:

Python的使用中需要導(dǎo)入相應(yīng)的模塊,此處首先用 import 語句

分別導(dǎo)入了numpy, leastsq與pylab模塊,其中numpy模塊常用用與數(shù)組類型的建立,讀入等過程。leastsq則為最小二乘法擬合函數(shù)。pylab是繪圖模塊。

接下來我們需要讀入需要進(jìn)行擬合的數(shù)據(jù),這里使用了 numpy.loadtxt() 函數(shù):

其參數(shù)有:

進(jìn)行擬合時(shí),首先我們需要定義一個(gè)目標(biāo)函數(shù)。對(duì)于圓的方程,我們需要圓心坐標(biāo)(a,b)以及半徑r三個(gè)參數(shù),方便起見用p來存儲(chǔ):

緊接著就可以進(jìn)行擬合了, leastsq() 函數(shù)需要至少提供擬合的函數(shù)名與參數(shù)的初始值:

返回的結(jié)果為一數(shù)組,分別為擬合得到的參數(shù)與其誤差值等,這里只取擬合參數(shù)值。

leastsq() 的參數(shù)具體有:

輸出選項(xiàng)有:

最后我們可以將原數(shù)據(jù)與擬合結(jié)果一同做成線狀圖,可采用 pylab.plot() 函數(shù):

pylab.plot() 函數(shù)需提供兩列數(shù)組作為輸入,其他參數(shù)可調(diào)控線條顏色,形狀,粗細(xì)以及對(duì)應(yīng)名稱等性質(zhì)。視需求而定,此處不做詳解。

pylab.legend() 函數(shù)可以調(diào)控圖像標(biāo)簽的位置,有無邊框等性質(zhì)。

pylab.annotate() 函數(shù)設(shè)置注釋,需至少提供注釋內(nèi)容與放置位置坐標(biāo)的參數(shù)。

pylab.show() 函數(shù)用于顯示圖像。

最終結(jié)果如下圖所示:

用Python作科學(xué)計(jì)算

numpy.loadtxt

scipy.optimize.leastsq

多項(xiàng)式擬合平方誤差怎么求

線性模型(二)之多項(xiàng)式擬合

1. 多項(xiàng)式擬合問題

??多項(xiàng)式擬合(polynominal curve fitting)是一種線性模型,模型和擬合參數(shù)的關(guān)系是線性的。多項(xiàng)式擬合的輸入是一維的,即x=xx=x,這是多項(xiàng)式擬合和線性回歸問題的主要區(qū)別之一。

??多項(xiàng)式擬合的目標(biāo)是構(gòu)造輸入xx的MM階多項(xiàng)式函數(shù),使得該多項(xiàng)式能夠近似表示輸入xx和輸出yy的關(guān)系,雖然實(shí)際上xx和yy的關(guān)系并不一定是多項(xiàng)式,但使用足夠多的階數(shù),總是可以逼近表示輸入xx和輸出yy的關(guān)系的。

??多項(xiàng)式擬合問題的輸入可以表示如下:

D={(x1,y1),(x2,y2),...,(xi,yi),...,(xN,yN)}xi∈Ryi∈R

D={(x1,y1),(x2,y2),...,(xi,yi),...,(xN,yN)}xi∈Ryi∈R

??目標(biāo)輸出是得到一個(gè)多項(xiàng)式函數(shù):

f(x)=w1x1+w2x2+wixi+...+wMxM+b=(∑i=1Mwixi)+b

f(x)=w1x1+w2x2+wixi+...+wMxM+b=(∑i=1Mwixi)+b

其中MM表示最高階數(shù)為MM。

??可見在線性擬合的模型中,共包括了(M+1)(M+1)個(gè)參數(shù),而該模型雖然不是輸入xx的線性函數(shù),但卻是(M+1)(M+1)個(gè)擬合參數(shù)的線性函數(shù),所以稱多項(xiàng)式擬合為線性模型。對(duì)于多項(xiàng)式擬合問題,其實(shí)就是要確定這(M+1)(M+1)個(gè)參數(shù),這里先假設(shè)階數(shù)MM是固定的(MM是一個(gè)超參數(shù),可以用驗(yàn)證集來確定MM最優(yōu)的值,詳細(xì)的關(guān)于MM值確定的問題,后面再討論),重點(diǎn)就在于如何求出這(M+1)(M+1)個(gè)參數(shù)的值。

2.優(yōu)化目標(biāo)

??多項(xiàng)式擬合是利用多項(xiàng)式函數(shù)逼近輸入xx和輸出yy的函數(shù)關(guān)系,通過什么指標(biāo)來衡量某個(gè)多項(xiàng)式函數(shù)的逼近程度呢?(其實(shí)這就是誤差/損失函數(shù))。擬合/回歸問題常用的評(píng)價(jià)指標(biāo)是均方誤差(在機(jī)器學(xué)習(xí)中的模型評(píng)估與度量博客中,我進(jìn)行了介紹)。多項(xiàng)式擬合問題也同樣采用該評(píng)價(jià)指標(biāo),以均方誤差作為誤差/損失函數(shù),誤差函數(shù)越小,模型越好。

E(w,b)=1N∑i=1N[f(xi)?yi]2

E(w,b)=1N∑i=1N[f(xi)?yi]2

??系數(shù)1N1N是一常數(shù),對(duì)優(yōu)化結(jié)果無影響,可以去除,即將均方誤差替換為平方誤差:

E(w,b)=∑i=1N[f(xi)?yi]2

E(w,b)=∑i=1N[f(xi)?yi]2

?? 到這里,就成功把多項(xiàng)式擬合問題變成了最優(yōu)化問題,優(yōu)化問題可表示為:

argminw,bE(w,b)

arg?minw,b?E(w,b)

即需要求得參數(shù){w1,...,wM,b}{w1,...,wM,b}的值,使得E(w,b)E(w,b)最小化。那么如何對(duì)該最優(yōu)化問題求解呢?

3. 優(yōu)化問題求解

3.1 求偏導(dǎo),聯(lián)立方程求解

?? 直觀的想法是,直接對(duì)所有參數(shù)求偏導(dǎo),令偏導(dǎo)為0,再聯(lián)立這M+1M+1個(gè)方程求解(因?yàn)楣灿蠱+1M+1個(gè)參數(shù),故求偏導(dǎo)后也是得到M+1M+1個(gè)方程)。

E(w,b)=∑i=1N[f(xi)?yi]2=∑i=1N[(w1x1i+w2x2i+wixji+...+wMxMi+b)?yi]2

E(w,b)=∑i=1N[f(xi)?yi]2=∑i=1N[(w1xi1+w2xi2+wixij+...+wMxiM+b)?yi]2

利用E(w,b)E(w,b)對(duì)各個(gè)參數(shù)求偏導(dǎo),如下:

?E(w,b)?wj?E(w,b)?b=2∑i=1N[(w1x1i+w2x2i+wixji+...+wMxMi+b)?yi]xji=2∑i=1N[(w1x1i+w2x2i+wixji+...+wMxMi+b)?yi]

?E(w,b)?wj=2∑i=1N[(w1xi1+w2xi2+wixij+...+wMxiM+b)?yi]xij?E(w,b)?b=2∑i=1N[(w1xi1+w2xi2+wixij+...+wMxiM+b)?yi]

求導(dǎo)之后,將各個(gè)點(diǎn)(xi,yi)(xi,yi)的值帶入偏導(dǎo)公式,聯(lián)立方程求解即可。

??針對(duì)該解法,可以舉個(gè)例子詳細(xì)說明,比如有兩個(gè)點(diǎn)(2,3),(5,8)(2,3),(5,8),需要利用二階多項(xiàng)式f(x)=w1x+w2x2+bf(x)=w1x+w2x2+b擬合。求解過程如下:

該二階多項(xiàng)式對(duì)參數(shù)求偏導(dǎo)得到

?E(w,b)?wj?E(w,b)?b=2∑i=12[(w1x1i+w2x2i+b)?yi]xji=[(w1x1+w2x21+b)?y1]xj1+[(w1x2+w2x22+b)?y2]xj2=2∑i=12[(w1x1i+w2x2i+b)?yi]=[(w1x1+w2x21+b)?y1]+[(w1x2+w2x22+b)?y2]

?E(w,b)?wj=2∑i=12[(w1xi1+w2xi2+b)?yi]xij=[(w1x1+w2x12+b)?y1]x1j+[(w1x2+w2x22+b)?y2]x2j?E(w,b)?b=2∑i=12[(w1xi1+w2xi2+b)?yi]=[(w1x1+w2x12+b)?y1]+[(w1x2+w2x22+b)?y2]

將點(diǎn)(2,3),(5,8)(2,3),(5,8)帶入方程,可以得到3個(gè)方程,

2b+7w1+29w2=117b+29w1+133w2=4629b+133w1+641w2=212

2b+7w1+29w2=117b+29w1+133w2=4629b+133w1+641w2=212

聯(lián)立這三個(gè)方程求解,發(fā)現(xiàn)有無窮多的解,只能得到3w1+21w2=53w1+21w2=5,這三個(gè)方程是線性相關(guān)的,故沒有唯一解。

??該方法通過求偏導(dǎo),再聯(lián)立方程求解,比較復(fù)雜,看著也很不美觀。那么有沒有更加方便的方法呢?

3.2 最小二乘法

?? 其實(shí)求解該最優(yōu)化問題(平方和的最小值)一般會(huì)采用最小二乘法(其實(shí)最小二乘法和求偏導(dǎo)再聯(lián)立方程求解的方法無本質(zhì)區(qū)別,求偏導(dǎo)也是最小二乘法,只是這里介紹最小二乘的矩陣形式而已)。最小二乘法(least squares),從英文名非常容易想到,該方法就是求解平方和的最小值的方法。

??可以將誤差函數(shù)以矩陣的表示(NN個(gè)點(diǎn),最高M(jìn)M階)為:

∥Xw?y∥2

‖Xw?y‖2

其中,把偏置bb融合到了參數(shù)ww中,

w={b,w1,w2,...,wM}

w={b,w1,w2,...,wM}

XX則表示輸入矩陣,

??????11...1x1x2...xNx21x22...x2N............xM1xM2...xMN??????

[1x1x12...x1M1x2x22...x2M...............1xNxN2...xNM]

yy則表示標(biāo)注向量,

y={y1,y2,...,yN}T

y={y1,y2,...,yN}T

因此,最優(yōu)化問題可以重新表示為

minw∥Xw?y∥2

minw‖Xw?y‖2

對(duì)其求導(dǎo),

?∥Xw?y∥2?w=?(Xw?y)T(Xw?y)?w=?(wTXT?yT)(Xw?y)?w=?(wTXTXw?yTXw?wTXTy+yTy)?w

?‖Xw?y‖2?w=?(Xw?y)T(Xw?y)?w=?(wTXT?yT)(Xw?y)?w=?(wTXTXw?yTXw?wTXTy+yTy)?w

在繼續(xù)對(duì)其求導(dǎo)之前,需要先補(bǔ)充一些矩陣求導(dǎo)的先驗(yàn)知識(shí)(常見的一些矩陣求導(dǎo)公式可以參見轉(zhuǎn)載的博客),如下:

?xTa?x=a?ax?x=aT?xTA?x=Ax+ATx

?xTa?x=a?ax?x=aT?xTA?x=Ax+ATx

根據(jù)上面的矩陣求導(dǎo)規(guī)則,繼續(xù)進(jìn)行損失函數(shù)的求導(dǎo)

?∥Xw?y∥2?w=?(wTXTXw?yTXw?wTXTy+yTy)?w=XTXw+(XTX)Tw?(yTX)T?XTy=2XTXw?2XTy

?‖Xw?y‖2?w=?(wTXTXw?yTXw?wTXTy+yTy)?w=XTXw+(XTX)Tw?(yTX)T?XTy=2XTXw?2XTy

其中XTXw=(XTX)TwXTXw=(XTX)Tw.令求導(dǎo)結(jié)果等于0,即可以求導(dǎo)問題的最小值。

2XTXw?2XTy=0w=(XTX)?1XTy

2XTXw?2XTy=0w=(XTX)?1XTy

??再利用最小二乘法的矩陣形式對(duì)前面的例子進(jìn)行求解,用二階多項(xiàng)式擬合即兩個(gè)點(diǎn)(2,3),(5,8)(2,3),(5,8)。

表示輸入矩陣 XX和標(biāo)簽向量yy

X=[1125425]y=[38]T

X=[1241525]y=[38]T

計(jì)算XTXXTX

XTX=???272972913329133641???

XTX=[272972913329133641]

矩陣求逆,再做矩陣乘法運(yùn)算

但 XTXXTX不可逆,故無唯一解。

??關(guān)于矩陣的逆是否存在,可以通過判斷矩陣的行列式是否為0(det(A)=?0det(A)=?0 來判斷,也可以通過初等行變換,觀察矩陣的行向量是否線性相關(guān),在這個(gè)例子下,矩陣不可逆,故有無窮多解。但如果新增一個(gè)點(diǎn)(4,7)(4,7),則就可以解了。

??其實(shí)這和數(shù)據(jù)集的點(diǎn)數(shù)和選擇的階數(shù)有關(guān),如果點(diǎn)數(shù)小于階數(shù)則會(huì)出現(xiàn)無窮解的情況,如果點(diǎn)數(shù)等于階數(shù),那么剛好有解可以完全擬合所有數(shù)據(jù)點(diǎn),如果點(diǎn)數(shù)大于階數(shù),則會(huì)求的近似解。

??那么對(duì)于點(diǎn)數(shù)小于階數(shù)的情況,如何求解?在python的多項(xiàng)式擬合函數(shù)中是可以擬合的,而且效果不錯(cuò),具體算法不是很了解,可以想辦法參考python的ployfit()函數(shù)的實(shí)現(xiàn)。

4. 擬合階數(shù)的選擇

?? 在前面的推導(dǎo)中,多項(xiàng)式的階數(shù)被固定了,那么實(shí)際場(chǎng)景下應(yīng)該如何選擇合適的階數(shù)MM呢?

一般會(huì)選擇階數(shù)MM小于點(diǎn)數(shù)NN

把訓(xùn)練數(shù)據(jù)分為訓(xùn)練集合驗(yàn)證集,在訓(xùn)練集上,同時(shí)用不同的MM值訓(xùn)練多個(gè)模型,然后選擇在驗(yàn)證集誤差最小的階數(shù)script type="math/tex" id="MathJax-Element-5573"M/script

分享題目:python函數(shù)擬合誤差 python擬合曲線誤差分析
新聞來源:http://jinyejixie.com/article46/dochheg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、用戶體驗(yàn)、ChatGPT、定制網(wǎng)站Google、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
清镇市| 江川县| 张家界市| 青铜峡市| 郧西县| 阳春市| 广州市| 东兰县| 昆明市| 万州区| 广州市| 海林市| 凌源市| 大宁县| 泸水县| 济源市| 阿拉善左旗| 罗江县| 通河县| 亚东县| 莲花县| 梁河县| 周宁县| 宝鸡市| 呼和浩特市| 贡嘎县| 扶余县| 饶平县| 墨玉县| 辽宁省| 通城县| 图木舒克市| 景德镇市| 安国市| 桐乡市| 琼海市| 丰镇市| 雅安市| 河源市| 合江县| 阳信县|