很多業務場景中,我們希望通過一個特定的函數來擬合業務數據,以此來預測未來數據的變化趨勢。(比如用戶的留存變化、付費變化等)
創新互聯是一家專業提供花垣企業網站建設,專注與網站制作、成都網站建設、成都h5網站建設、小程序制作等業務。10年已為花垣眾多企業、政府機構等服務。創新互聯專業網站制作公司優惠進行中。
本文主要介紹在 Python 中常用的兩種曲線擬合方法:多項式擬合 和 自定義函數擬合。
通過多項式擬合,我們只需要指定想要擬合的多項式的最高項次是多少即可。
運行結果:
對于自定義函數擬合,不僅可以用于直線、二次曲線、三次曲線的擬合,它可以適用于任意形式的曲線的擬合,只要定義好合適的曲線方程即可。
運行結果:
在函數擬合中,如果用p表示函數中需要確定的參數,那么目標就是找到一組p,使得下面函數S的值最小:
這種算法稱為最小二乘法擬合。Python的Scipy數值計算庫中的optimize模塊提供了 leastsq() 函數,可以對數據進行最小二乘擬合計算。
此處利用該函數對一段弧線使用圓方程進行了擬合,并通過Matplotlib模塊進行了作圖,程序內容如下:
Python的使用中需要導入相應的模塊,此處首先用 import 語句
分別導入了numpy, leastsq與pylab模塊,其中numpy模塊常用用與數組類型的建立,讀入等過程。leastsq則為最小二乘法擬合函數。pylab是繪圖模塊。
接下來我們需要讀入需要進行擬合的數據,這里使用了 numpy.loadtxt() 函數:
其參數有:
進行擬合時,首先我們需要定義一個目標函數。對于圓的方程,我們需要圓心坐標(a,b)以及半徑r三個參數,方便起見用p來存儲:
緊接著就可以進行擬合了, leastsq() 函數需要至少提供擬合的函數名與參數的初始值:
返回的結果為一數組,分別為擬合得到的參數與其誤差值等,這里只取擬合參數值。
leastsq() 的參數具體有:
輸出選項有:
最后我們可以將原數據與擬合結果一同做成線狀圖,可采用 pylab.plot() 函數:
pylab.plot() 函數需提供兩列數組作為輸入,其他參數可調控線條顏色,形狀,粗細以及對應名稱等性質。視需求而定,此處不做詳解。
pylab.legend() 函數可以調控圖像標簽的位置,有無邊框等性質。
pylab.annotate() 函數設置注釋,需至少提供注釋內容與放置位置坐標的參數。
pylab.show() 函數用于顯示圖像。
最終結果如下圖所示:
用Python作科學計算
numpy.loadtxt
scipy.optimize.leastsq
任意波形的生成 (geneartion of arbitrary waveform) 在商業,軍事等領域都有著重要的應用,諸如空間光通信 (free-space optics communication), 高速信號處理 (high-speed signal processing),雷達 (radar) 等。在任意波形生成后, 如何評估生成的任意波形 成為另外一個重要的話題。
假設有一組實驗數據,已知他們之間的函數關系:y=f(x),通過這些信息,需要確定函數中的一些參數項。例如,f 是一個線型函數 f(x)=k*x+b,那么參數 k 和 b 就是需要確定的值。如果這些參數用 p 表示的話,那么就需要找到一組 p 值使得如下公式中的 S 函數最小:
這種算法被稱之為 最小二乘擬合 (least-square fitting)。scipy 中的子函數庫 optimize 已經提供實現最小二乘擬合算法的函數 leastsq 。下面是 leastsq 函數導入的方式:
scipy.optimize.leastsq 使用方法
在 Python科學計算——Numpy.genfromtxt 一文中,使用 numpy.genfromtxt 對數字示波器采集的三角波數據導入進行了介紹,今天,就以 4GHz三角波 波形的擬合為案例介紹任意波形的擬合方法。
在 Python科學計算——如何構建模型? 一文中,討論了如何構建三角波模型。在標準三角波波形的基礎上添加了 橫向,縱向的平移和伸縮特征參數 ,最后添加了 噪聲參數 模擬了三角波幅度參差不齊的隨機性特征。但在波形擬合時,并不是所有的特征參數都要納入考量,例如,噪聲參數應是 波形生成系統 的固有特征,正因為它的存在使得產生的波形存在瑕疵,因此,在進行波形擬合并評估時,不應將噪聲參數納入考量,最終模型如下:
在調用 scipy.optimize.leastsq 函數時,需要構建誤差函數:
有時候,為了使圖片有更好的效果,需要對數據進行一些處理:
leastsq 調用方式如下:
合理的設置 p0 可以減少程序運行時間,因此,可以在運行一次程序后,用擬合后的相應數據對 p0 進行修正。
在對波形進行擬合后,調用 pylab 對擬合前后的數據進行可視化:
均方根誤差 (root mean square error) 是一個很好的評判標準,它是觀測值與真值偏差的平方和觀測次數n比值的平方根,在實際測量中,觀測次數n總是有限的,真值只能用最可信賴(最佳)值來代替.方根誤差對一組測量中的特大或特小誤差反映非常敏感,所以,均方根誤差能夠很好地反映出測量的精密度。
RMSE 用程序實現如下:
擬合效果,模型參數輸出:
leastsq 函數適用于任何波形的擬合,下面就來介紹一些常用的其他波形:
文章題目:python求擬合函數,python求擬合函數系數
當前URL:http://vcdvsql.cn/article0/hsjpoo.html
成都網站建設公司_創新互聯,為您提供網站建設、網站改版、虛擬主機、軟件開發、手機網站建設、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯