python擬合分布函數(shù),概率分布函數(shù)擬合

python+正態(tài)分布+擬合是怎么回事

高斯分布是從負(fù)無窮到正無窮的.能限制住就不是高斯分布了.或者你做個(gè)近似的,函數(shù)生成的數(shù)值如果不在[0,1],就重新隨機(jī)一次

成都創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、成都網(wǎng)站制作、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個(gè)性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營(yíng)銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗(yàn)、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團(tuán)隊(duì)及專業(yè)的網(wǎng)站設(shè)計(jì)師團(tuán)隊(duì)。

Python科學(xué)計(jì)算——任意波形擬合

任意波形的生成 (geneartion of arbitrary waveform) 在商業(yè),軍事等領(lǐng)域都有著重要的應(yīng)用,諸如空間光通信 (free-space optics communication), 高速信號(hào)處理 (high-speed signal processing),雷達(dá) (radar) 等。在任意波形生成后, 如何評(píng)估生成的任意波形 成為另外一個(gè)重要的話題。

假設(shè)有一組實(shí)驗(yàn)數(shù)據(jù),已知他們之間的函數(shù)關(guān)系:y=f(x),通過這些信息,需要確定函數(shù)中的一些參數(shù)項(xiàng)。例如,f 是一個(gè)線型函數(shù) f(x)=k*x+b,那么參數(shù) k 和 b 就是需要確定的值。如果這些參數(shù)用 p 表示的話,那么就需要找到一組 p 值使得如下公式中的 S 函數(shù)最?。?/p>

這種算法被稱之為 最小二乘擬合 (least-square fitting)。scipy 中的子函數(shù)庫(kù) optimize 已經(jīng)提供實(shí)現(xiàn)最小二乘擬合算法的函數(shù) leastsq 。下面是 leastsq 函數(shù)導(dǎo)入的方式:

scipy.optimize.leastsq 使用方法

在 Python科學(xué)計(jì)算——Numpy.genfromtxt 一文中,使用 numpy.genfromtxt 對(duì)數(shù)字示波器采集的三角波數(shù)據(jù)導(dǎo)入進(jìn)行了介紹,今天,就以 4GHz三角波 波形的擬合為案例介紹任意波形的擬合方法。

在 Python科學(xué)計(jì)算——如何構(gòu)建模型? 一文中,討論了如何構(gòu)建三角波模型。在標(biāo)準(zhǔn)三角波波形的基礎(chǔ)上添加了 橫向,縱向的平移和伸縮特征參數(shù) ,最后添加了 噪聲參數(shù) 模擬了三角波幅度參差不齊的隨機(jī)性特征。但在波形擬合時(shí),并不是所有的特征參數(shù)都要納入考量,例如,噪聲參數(shù)應(yīng)是 波形生成系統(tǒng) 的固有特征,正因?yàn)樗拇嬖谑沟卯a(chǎn)生的波形存在瑕疵,因此,在進(jìn)行波形擬合并評(píng)估時(shí),不應(yīng)將噪聲參數(shù)納入考量,最終模型如下:

在調(diào)用 scipy.optimize.leastsq 函數(shù)時(shí),需要構(gòu)建誤差函數(shù):

有時(shí)候,為了使圖片有更好的效果,需要對(duì)數(shù)據(jù)進(jìn)行一些處理:

leastsq 調(diào)用方式如下:

合理的設(shè)置 p0 可以減少程序運(yùn)行時(shí)間,因此,可以在運(yùn)行一次程序后,用擬合后的相應(yīng)數(shù)據(jù)對(duì) p0 進(jìn)行修正。

在對(duì)波形進(jìn)行擬合后,調(diào)用 pylab 對(duì)擬合前后的數(shù)據(jù)進(jìn)行可視化:

均方根誤差 (root mean square error) 是一個(gè)很好的評(píng)判標(biāo)準(zhǔn),它是觀測(cè)值與真值偏差的平方和觀測(cè)次數(shù)n比值的平方根,在實(shí)際測(cè)量中,觀測(cè)次數(shù)n總是有限的,真值只能用最可信賴(最佳)值來代替.方根誤差對(duì)一組測(cè)量中的特大或特小誤差反映非常敏感,所以,均方根誤差能夠很好地反映出測(cè)量的精密度。

RMSE 用程序?qū)崿F(xiàn)如下:

擬合效果,模型參數(shù)輸出:

leastsq 函數(shù)適用于任何波形的擬合,下面就來介紹一些常用的其他波形:

Python最小二乘法擬合與作圖

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

這種算法稱為最小二乘法擬合。Python的Scipy數(shù)值計(jì)算庫(kù)中的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

網(wǎng)站名稱:python擬合分布函數(shù),概率分布函數(shù)擬合
轉(zhuǎn)載源于:http://muchs.cn/article0/hssdoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)站內(nèi)鏈定制開發(fā)、定制網(wǎng)站

廣告

聲明:本網(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)

小程序開發(fā)