真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python計算誤差函數(shù),python計算平均絕對誤差

Python--math庫

Python math 庫提供許多對浮點數(shù)的數(shù)學(xué)運算函數(shù),math模塊不支持復(fù)數(shù)運算,若需計算復(fù)數(shù),可使用cmath模塊(本文不贅述)。

成都創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為碌曲等服務(wù)建站,碌曲等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為碌曲企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

使用dir函數(shù),查看math庫中包含的所有內(nèi)容:

1) math.pi????# 圓周率π

2) math.e????#自然對數(shù)底數(shù)

3) math.inf? ? #正無窮大∞,-math.inf? ? #負無窮大-∞

4) math.nan? ? #非浮點數(shù)標記,NaN(not a number)

1) math.fabs(x)? ? #表示X值的絕對值

2) math.fmod(x,y)? ? #表示x/y的余數(shù),結(jié)果為浮點數(shù)

3) math.fsum([x,y,z])? ? #對括號內(nèi)每個元素求和,其值為浮點數(shù)

4) math.ceil(x)? ? #向上取整,返回不小于x的最小整數(shù)

5)math.floor(x)? ? #向下取整,返回不大于x的最大整數(shù)

6) math.factorial(x)? ? #表示X的階乘,其中X值必須為整型,否則報錯

7) math.gcd(a,b)? ? #表示a,b的最大公約數(shù)

8)? math.frexp(x)? ? ? #x = i *2^j,返回(i,j)

9) math.ldexp(x,i)? ? #返回x*2^i的運算值,為math.frexp(x)函數(shù)的反運算

10) math.modf(x)? ? #表示x的小數(shù)和整數(shù)部分

11) math.trunc(x)? ? #表示x值的整數(shù)部分

12) math.copysign(x,y)? ? #表示用數(shù)值y的正負號,替換x值的正負號

13) math.isclose(a,b,rel_tol =x,abs_tol = y)? ? #表示a,b的相似性,真值返回True,否則False;rel_tol是相對公差:表示a,b之間允許的最大差值,abs_tol是最小絕對公差,對比較接近于0有用,abs_tol必須至少為0。

14) math.isfinite(x)? ? #表示當x不為無窮大時,返回True,否則返回False

15) math.isinf(x)? ? #當x為±∞時,返回True,否則返回False

16) math.isnan(x)? ? #當x是NaN,返回True,否則返回False

1) math.pow(x,y)? ? #表示x的y次冪

2) math.exp(x)? ? #表示e的x次冪

3) math.expm1(x)? ? #表示e的x次冪減1

4) math.sqrt(x)? ? #表示x的平方根

5) math.log(x,base)? ? #表示x的對數(shù)值,僅輸入x值時,表示ln(x)函數(shù)

6) math.log1p(x)? ? #表示1+x的自然對數(shù)值

7) math.log2(x)? ? #表示以2為底的x對數(shù)值

8) math.log10(x)? ? #表示以10為底的x的對數(shù)值

1) math.degrees(x)? ? #表示弧度值轉(zhuǎn)角度值

2) math.radians(x)? ? #表示角度值轉(zhuǎn)弧度值

3) math.hypot(x,y)? ? #表示(x,y)坐標到原點(0,0)的距離

4) math.sin(x)? ? #表示x的正弦函數(shù)值

5) math.cos(x)? ? #表示x的余弦函數(shù)值

6) math.tan(x)? ? #表示x的正切函數(shù)值

7)math.asin(x)? ? #表示x的反正弦函數(shù)值

8)?math.acos(x)? ? #表示x的反余弦函數(shù)值

9)?math.atan(x)? ? #表示x的反正切函數(shù)值

10) math.atan2(y,x)? ? #表示y/x的反正切函數(shù)值

11) math.sinh(x)? ? #表示x的雙曲正弦函數(shù)值

12) math.cosh(x)? ? #表示x的雙曲余弦函數(shù)值

13) math.tanh(x)? ? #表示x的雙曲正切函數(shù)值

14) math.asinh(x)? ? #表示x的反雙曲正弦函數(shù)值

15) math.acosh(x)? ? #表示x的反雙曲余弦函數(shù)值

16) math.atanh(x)? ? #表示x的反雙曲正切函數(shù)值

1)math.erf(x)? ? #高斯誤差函數(shù)

2) math.erfc(x)? ? #余補高斯誤差函數(shù)

3) math.gamma(x)? ? #伽馬函數(shù)(歐拉第二積分函數(shù))

4) math.lgamma(x)? ? #伽馬函數(shù)的自然對數(shù)

python能做什么科學(xué)計算

python做科學(xué)計算的特點:1. 科學(xué)庫很全。(推薦學(xué)習(xí):Python視頻教程)

科學(xué)庫:numpy,scipy。作圖:matplotpb。并行:mpi4py。調(diào)試:pdb。

2. 效率高。

如果你能學(xué)好numpy(array特性,f2py),那么你代碼執(zhí)行效率不會比fortran,C差太多。但如果你用不好array,那樣寫出來的程序效率就只能呵呵了。所以入門后,請一定花足夠多的時間去了解numpy的array類。

3. 易于調(diào)試。

pdb是我見過最好的調(diào)試工具,沒有之一。直接在程序斷點處給你一個截面,這只有文本解釋語言才能辦到。毫不夸張的說,你用python開發(fā)程序只要fortran的1/10時間。

4. 其他。

它豐富而且統(tǒng)一,不像C++的庫那么雜(好比pnux的各種發(fā)行版),python學(xué)好numpy就可以做科學(xué)計算了。python的第三方庫很全,但是不雜。python基于類的語言特性讓它比起fortran等更加容易規(guī)?;_發(fā)。

數(shù)值分析中,龍格-庫塔法(Runge-Kutta methods)是用于非線性常微分方程的解的重要的一類隱式或顯式迭代法。這些技術(shù)由數(shù)學(xué)家卡爾·龍格和馬丁·威爾海姆·庫塔于1900年左右發(fā)明。

龍格-庫塔(Runge-Kutta)方法是一種在工程上應(yīng)用廣泛的高精度單步算法,其中包括著名的歐拉法,用于數(shù)值求解微分方程。由于此算法精度高,采取措施對誤差進行抑制,所以其實現(xiàn)原理也較復(fù)雜。

高斯積分是在概率論和連續(xù)傅里葉變換等的統(tǒng)一化等計算中有廣泛的應(yīng)用。在誤差函數(shù)的定義中它也出現(xiàn)。雖然誤差函數(shù)沒有初等函數(shù),但是高斯積分可以通過微積分學(xué)的手段解析求解。高斯積分(Gaussian integral),有時也被稱為概率積分,是高斯函數(shù)的積分。它是依德國數(shù)學(xué)家兼物理學(xué)家卡爾·弗里德里希·高斯之姓氏所命名。

洛倫茨吸引子及其導(dǎo)出的方程組是由愛德華·諾頓·洛倫茨于1963年發(fā)表,最初是發(fā)表在《大氣科學(xué)雜志》(Journal of the Atmospheric Sciences)雜志的論文《Deterministic Nonperiodic Flow》中提出的,是由大氣方程中出現(xiàn)的對流卷方程簡化得到的。

這一洛倫茨模型不只對非線性數(shù)學(xué)有重要性,對于氣候和天氣預(yù)報來說也有著重要的含義。行星和恒星大氣可能會表現(xiàn)出多種不同的準周期狀態(tài),這些準周期狀態(tài)雖然是完全確定的,但卻容易發(fā)生突變,看起來似乎是隨機變化的,而模型對此現(xiàn)象有明確的表述。

更多Python相關(guān)技術(shù)文章,請訪問Python教程欄目進行學(xué)習(xí)!以上就是小編分享的關(guān)于python能做什么科學(xué)計算的詳細內(nèi)容希望對大家有所幫助,更多有關(guān)python教程請關(guān)注環(huán)球青藤其它相關(guān)文章!

Python如何使用sd()函數(shù)求數(shù)據(jù)的標準差

python的求

標準差

的函數(shù)是std,是numpy庫的成員,

如果非要

用sd函數(shù)求標準差,也不是不行(from

numpy

import

std

as

sd)。其參數(shù)是所需求標準差的矩陣或列表,

返回值

即標準差。示范如下:

import

numpy

as

np;

from

numpy

import

std

as

sd;

print([1,

2,3],"的標準差是);

print(sd([1,2,3]));

Python運算顯示結(jié)果問題

我的也一樣,不糾結(jié)這個。反正使用時指定精度就行了。

幫你試了,必須寫成這樣才行。二進制表示10進制的小數(shù),10進制里很正常的

談?wù)勱P(guān)于Python里面小數(shù)點精度控制的問題

十進制整數(shù)不會變成二進制小數(shù),但十進制很短的小數(shù)的是可能變成二進制很長小數(shù)的。

例如0.54轉(zhuǎn)變成二進制是:

0.54=0.10001010001111010111000010100011110101110000101001B

還有一些十進制下一兩位小數(shù),在二進制下無限循環(huán)小數(shù)的,只能取近似值。

多項式擬合平方誤差怎么求

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

1. 多項式擬合問題

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

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

??多項式擬合問題的輸入可以表示如下:

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

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

??目標輸出是得到一個多項式函數(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)個參數(shù),而該模型雖然不是輸入xx的線性函數(shù),但卻是(M+1)(M+1)個擬合參數(shù)的線性函數(shù),所以稱多項式擬合為線性模型。對于多項式擬合問題,其實就是要確定這(M+1)(M+1)個參數(shù),這里先假設(shè)階數(shù)MM是固定的(MM是一個超參數(shù),可以用驗證集來確定MM最優(yōu)的值,詳細的關(guān)于MM值確定的問題,后面再討論),重點就在于如何求出這(M+1)(M+1)個參數(shù)的值。

2.優(yōu)化目標

??多項式擬合是利用多項式函數(shù)逼近輸入xx和輸出yy的函數(shù)關(guān)系,通過什么指標來衡量某個多項式函數(shù)的逼近程度呢?(其實這就是誤差/損失函數(shù))。擬合/回歸問題常用的評價指標是均方誤差(在機器學(xué)習(xí)中的模型評估與度量博客中,我進行了介紹)。多項式擬合問題也同樣采用該評價指標,以均方誤差作為誤差/損失函數(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ù),對優(yōu)化結(jié)果無影響,可以去除,即將均方誤差替換為平方誤差:

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

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

?? 到這里,就成功把多項式擬合問題變成了最優(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)最小化。那么如何對該最優(yōu)化問題求解呢?

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

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

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

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)對各個參數(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)之后,將各個點(xi,yi)(xi,yi)的值帶入偏導(dǎo)公式,聯(lián)立方程求解即可。

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

該二階多項式對參數(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]

將點(2,3),(5,8)(2,3),(5,8)帶入方程,可以得到3個方程,

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

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

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

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

3.2 最小二乘法

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

??可以將誤差函數(shù)以矩陣的表示(NN個點,最高MM階)為:

∥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則表示標注向量,

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

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

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

minw∥Xw?y∥2

minw‖Xw?y‖2

對其求導(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ù)對其求導(dǎo)之前,需要先補充一些矩陣求導(dǎo)的先驗知識(常見的一些矩陣求導(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ù)進行損失函數(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

??再利用最小二乘法的矩陣形式對前面的例子進行求解,用二階多項式擬合即兩個點(2,3),(5,8)(2,3),(5,8)。

表示輸入矩陣 XX和標簽向量yy

X=[1125425]y=[38]T

X=[1241525]y=[38]T

計算XTXXTX

XTX=???272972913329133641???

XTX=[272972913329133641]

矩陣求逆,再做矩陣乘法運算

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

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

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

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

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

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

一般會選擇階數(shù)MM小于點數(shù)NN

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


文章名稱:python計算誤差函數(shù),python計算平均絕對誤差
本文來源:http://weahome.cn/article/hedsjo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部