二次多項式擬合曲線 - CSDN

2021-02-08 CSDN技術社區
多項式擬合一次函數

運行結果:

100

運行結果:

[4.00355516 1.55927961]

# 還可以用 poly1d 生成一個以傳入的 coeff 為參數的多項式函數:

多項式擬合正弦函數

最小二乘擬合

運行結果:

[<matplotlib.lines.Line2D at 0x251c6b60970>]

運行結果:

array([[0.05050505, 1. ],
[0.1010101 , 1. ],
[0.15151515, 1. ],
[0.2020202 , 1. ]])

運行結果:

sum squared residual = 12.986
rank of the X matrix = 2
singular values of X = [30.23732043 4.82146667]

線性回歸擬合

運行結果:

(0.5028457518511993, 0.024071946424871093)

運行結果:

R-value = 0.912
p-value (probability there is no correlation) = 1.254e-39
Root mean squared error of the fit = 0.151

更高級的擬合

運行結果:

[3.32130888 1.89218577 1.28617493 0.68515905]
1

# 更高級的做法:不需要定義誤差函數,直接傳入function作為參數。

運行結果:

[3.32130886 1.89218577 1.28617493 0.68515906]
[[ 0.13806975 -0.04121882 0.01507384 -0.04721358]
[-0.04121882 0.01262612 -0.00431895 0.01352772]
[ 0.01507384 -0.00431895 0.00224488 -0.00703102]
[-0.04721358 0.01352772 -0.00703102 0.02227572]]

運行結果:

normalized relative errors for each parameter
a b f phi
[0.11187679 0.05938424 0.03683802 0.21783342]

附錄01:matplotlib庫

① Matplotlib庫 是 Python 的繪圖庫。

② 它常與 NumPy 一起使用。

附錄02:matplotlib.pyplot庫

① matplotlib的pyplot子庫提供了繪圖API,方便用戶快速繪製2D圖表。

② matplotlib.pyplot是函數的集合,每一個函數都對圖像作了修改,比如其中有創建圖形,在圖像上創建畫圖區域,在畫圖區域上畫線,在線上標註等。

附錄03:np.polyfit()函數

① polyfit()函數是多項式擬合函數,polyfit(x, noise_y, 1)表示擬合一階多項式,即線性擬合函數。

② 即擬合出一階多項式 y=a1x+a0,返回兩個係數 [a1,a0]。

附錄04:np.poly1d()函數

① np.poly1d()函數有兩個入口參數。

② 若沒有第二個參數,則生成一個多項式。

③ 例如:

p = np.poly1d([2,3,5,7])

print(p)==>>2x3+3x2+5x+7

④ 若第二個參數為True,則表示把數組中的值作為根,然後反推多項式。

⑤ 例如:

q = np.poly1d([2,3,5],True)

print(q)===>>(x-2)(x-3)(x-5)=x3-10x2+31x-30

附錄05:%matplotlib inline

① 有了%matplotlib inline 就可以省掉plt.show()了。

② 如果不加這一句的話,我們在畫圖結束之後需要加上plt.show()才可以顯示圖像。

附錄06:numpy.random.randn()函數

① randn函數返回一組樣本,具有標準正態分布。

② 標準正態分布又稱為u分布,是以0為均值、以1為標準差的正態分布,記為N(0,1)。

附錄07:plt.axis()函數

① axis是用來設置具體某一個坐標軸的屬性的。

② xmin, xmax, ymin, ymax = axis([xmin, xmax, ymin, ymax])

附錄08:最小二乘法

① 當M個點具有線性關係時,我們可以使用一個 N-1 階的多項式擬合這 M 個點,關係式為:

② 即:

③ 要得到C,可以使用scipy.linalg.lstsq求最小二乘解。

附錄09:numpy.linalg庫

① numpy.linalg模塊包含線性代數的函數,使用這個模塊,可以計算逆矩陣、求特徵值、解線性方程組以及求解行列式等。

附錄10:scipy.stats庫

① Scipy的stats模塊包含了多種概率分布的隨機變量,隨機變量分為連續的和離散的兩種。

附錄11:lstsq()函數

① lstsq()函數表示最小二乘法,它有四個返回值,第一個返回值的第一個元素為多項式的係數,第二個返回值為平方和殘差,第三個返回值句矩陣X的秩,第四個返回值為矩陣X的奇異值。

附錄12:linregress()函數

① linregress(x,y)函數就是線性回歸的函數。

② linregress(x,y)函數有五個返回值,第一個返回值slope為斜率,第二個返回值intercept為截距,第三個返回值r_value為相關係數,第四個返回值p-value為沒有相關性的可能性,第五個返回值stderr為擬合的均方根誤差。

附錄13:np.hstack()函數

① np.hstack()函數使得數組沿著水平方向堆疊起來。

import numpy as np

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

res = np.hstack((arr1, arr2))

print(res)

輸出結果:

[1 2 3 4 5 6]

arr1 = np.array([[1, 2], [3, 4], [5, 6]])

arr2 = np.array([[7, 8], [9, 0], [0, 1]])

res = np.hstack((arr1, arr2))

print(res)

輸出結果:

[[1 2 7 8]

[3 4 9 0]

[5 6 0 1]]

附錄14:x[:,np.newaxis]

① x[:,np.newaxis]使得一行元素變成一列元素了。

附錄15:np.exp()函數

① np.exp()函數返回e(自然對數的底)的冪次方。

附錄16:norm.rvs()函數

① norm函數 可以實現正態分布,norm.rvs()函數通過loc和scale參數可以指定隨機變量的偏移和縮放參數,這裡對應的是正態分布的期望和標準差。

② size得到隨機數數組的形狀參數。(也可以使用np.random.normal(loc=0.0, scale=1.0, size=None))

附錄17:curve_fit()函數

① 而curve_fit()函數是將模型函數適用於噪聲數據的最後一步,它的主要功能就是計算出參數。

② curve_fit()函數第一個返回的是函數的參數,第二個返回值為各個參數的協方差矩陣,協方差矩陣的對角線為各個參數的方差。

參考文獻:Henri Jambo:Python曲線擬合詳解

幫忙點個讚,謝謝!

整理不易,給點鼓勵,謝謝!

我整理的所有筆記!( 專欄裡有 )

相關焦點

  • 最小二乘法:氣溫的曲線擬合和評估(從二次到六次多項式曲線擬合,用RMSE評估擬合效果)
    % 利用polyfit()函數進行2次、3次、4次、5次、6次多項式曲線擬合p2 = polyfit(M,T',2);p3 = polyfit(M,T',3);p4 = polyfit(M,T',4);p5 = polyfit(M,T',5);p6 = polyfit(M,T',6);MM = 1:0.1:12;% 利用polyval()函數計算多項式擬合函數的函數值
  • MATLAB曲線擬合及Fourier分析
    在這種情況下,如果強求構造的函數(曲線)通過各插值節點,顯然是不合理的。為此,人們設想構造一個函數(曲線)y=g(x)去擬合f(x),但它不必通過各插值節點,而只是使該曲線從這些插值節點中穿過,且使它在某種意義下最優。MATLAB的曲線擬合是用常見的最小二乘原理,所構造的g(x)是一個次數小於擬合節點個數的多項式。
  • 如何利用Origin進行曲線擬合?
    Origin 提供了強大的線性回歸和函數擬合功能,其中最有代表性的是線性回歸和非線性最小平方擬合。曲線擬合(curve fitting)是指選擇適當的曲線類型來擬合數據,並用擬合的曲線方程分析兩個變量之間的關係。通過對數據進行曲線擬合,我們不但能找到它的變化規律,還能對數據的變化進行一定程度的預測。
  • MATLAB繪製帶置信區間的擬合曲線
    曲線擬合是已知離散點上的數據集,構造一個解析函數(其圖形為一曲線),使在原離散點上儘可能接近給定的值。
  • Matlab曲線擬合和插值
    MATLAB軟體提供了基本的曲線擬合函數的命令.
  • 線性擬合與曲線擬合,直接在圖上添加擬合曲線、擬合方程、判別係數...
    曲線擬合(Curve Fitting)是指選擇適當的曲線類型來擬合觀測數據,並用擬合的曲線方程分析兩個變量之間的關係。也可以說曲線擬合就是使用某個模型(或者稱為方程),將一系列的數據擬合出平滑的曲線,以便觀察兩組數據之間的內在聯繫,了解數據之間的變化趨勢。通過對數據進行曲線擬合,我們不但能找到數據中潛在的某種規律,還能對數據的變化進行預測。
  • 【基礎教程】Matlab 曲線擬合之polyfit與polyval函數
    textread('1080y.txt');%pt5 = textread('480y.txt');%pt6 = textread('240y.txt');%figure(1)subplot(131)% plot(pt1(1,:),pt1(2,:),'-or');x = pt1(1,:);y = pt1(2,:);x1=the(1,:);y1=the(2,:);p1=polyfit(x,y,c); % 擬合出的二次函數的係數
  • 高考數學原創試題—多項式擬合
    泰勒展開式表明,具有n階導數的函數,可近似的由一個n次多項式表示,n取值越大,越接近於真實的函數,因此利用n階多項式可以對函數進行擬合,這種方法在近似計算等領域有著重要的應用。我們知道,一次函數的圖象是一條直線,因此是單調函數。
  • Step函數擬合曲線方程淺析
    從圖1可以看出STEP函數的曲線可以分為3部分: 當 x x0 x>x1時,y3=h1,y3為一段水平直線 這裡我們並不知道擬合曲線的方程,圖1資料僅指出該曲線為三階函數曲線,這裡我們先假設該曲線為二階函數曲線,並將兩點間的擬合曲線拆分成兩部分
  • matlab插值擬合(二)
    1 基於最小二乘法的多項式擬合函數:polyfitp = polyfit(x,y,n),待擬合的多項式為p(1)*x^n + p(2)*x^(n-1) +…+ p(n)*x + p(n+1),其中x是擬合數據的自變量,y是因變量,n是擬合多項式的階數,如當n為1時,即為一次線性擬合。
  • 應用matlab進行多項式擬合
    採用matlab軟體中的polyfit()函數進行多項式擬合,分別採用5階多項式和9階多項式進行擬合,並對擬合結果進行繪圖對比。y5=polyval(p5,x);p5=vpa(poly2sym(p5),5)%顯示5階多項式p9=polyfit(x,y,9); %9階多項式擬合y9=polyval(p9,x);figure;%畫圖顯示
  • 一款好用且免費的曲線擬合工具CurveFitter
    多項式多項式Y=A+B1*x+B2*x2+……+Bk*xk是實際工程中常用到的模型。其中x為自變量,y為因變量,k為級數,常用級數為1~9。當級數為1時,多項式即為直線方程。當級數大於1時,模型表現出非線性。階數越高越能描述複雜的曲線,然而高階多項式需要更多的測試數據點才能得到較為精確的解,同時也會導致計算量的增加。實際分析中會根據數據源與目標問題選擇合適的階數。
  • 「C」使用 Excel 和 Math.Net 進行曲線擬合和數據預測
    錯誤的數據上圖是同一組探測器在同一天採集到的 19 次數據,總體來說重複性不錯,但很明顯最後 8 個探測器出了問題,導致採集到的數據在最後八個點一片混亂。即使把其中看起來最好的一組數據拿出來使用多項式擬合,也可以看出最後幾個點沒有落在擬合曲線上(只擬合最後 14 個點):雖然我知道這是硬體問題,但是遇到事情不能坐以待斃,軟體方面也許可以做些什麼。
  • 利用最小二乘法實現曲線擬合
    簡介在工程問題的計算中,我們經常需要處理一些離散數據的擬合問題,而最小二乘法是處理曲線擬合問題的常用方法。目前,許多軟體都提供有基於最小二乘法進行曲線擬合的功能,例如在Origin和Excel中均可直接利用離散數據進行曲線擬合。然而,這些軟體只能處理一些簡單函數的擬合問題,當需要擬合的函數較為複雜時,或者無法用簡單的表達式來表述時,則往往無法直接進行擬合。
  • 機器學習 | 多項式回歸處理非線性問題
    在標準線性回歸的情況下,對於二維數據,你可能有一個這樣的模型:如果我們想讓數據擬合一個拋物面而不是一個平面,我們可以把這些特徵合併成二階多項式,使模型看起來像這樣:更加一般地,多項式函數擬合數據時,多項式定義為其中
  • 使用python+sklearn實現使用貝葉斯嶺回歸擬合正弦曲線
    本示例使用貝葉斯嶺回歸擬合正弦曲線。
  • python散點圖中如何添加擬合線並顯示擬合方程與R方?
    CDA數據分析師 出品polyfit()函數可以使用最小二乘法將一些點擬合成一條曲線.numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)# x:要擬合點的橫坐標# y:要擬合點的縱坐標# deg:自由度.例如:自由度為2,那麼擬合出來的曲線就是二次函數,自由度是3,擬合出來的曲線就是3次函數首先我們先來構造一下需要被擬合的散點
  • NASA科學家聯名求撤稿:金星有生命跡象是大烏龍,12階多項式擬合不...
    另外,NASA還發現,Greaves的研究團隊用多項式方程擬合噪聲,然後將其從數據中剔除。最簡單的可以是一階多項式方程,即 y=mx+b。二階多項式方程則是 y=m0x^2+m1x+b的形式,n階多項式方程以此類推。本來多項式擬合是常規操作,沒有什麼。
  • 擬合研究方法大解密,這可能是最好的關於擬合的系列文章
    根據e-logp曲線的形態,姜安龍等提出4次多項式的擬合模型。著名的Weierstrass第一定理指出,任意一個閉區間上的連續函數都可以在此區間上被代數多項式一致逼近,但因為多項式是冪級數的形式,其在一點附近的性質就足以決定它在整個數軸上的性質,因此,多項式對數據更為敏感,抗造能力差,容易發生擺動,階數越高,這種現象越明顯。
  • 非線性回歸模型--多項式回歸
    非線性回歸有多種形式,包括雙曲線、二次曲線、三次曲線、冪函數曲線、指數函數曲線、S形曲線、對數曲線、指數曲線等。非線性回歸分析的關鍵是確定函數的具體形式。通常需要根據科學研究或生產實際中的具體問題或試驗數據的特徵做出合適的選擇。