Python基于最小二乘法實(shí)現(xiàn)曲線擬合示例
本文實(shí)例講述了Python基于最小二乘法實(shí)現(xiàn)曲線擬合。分享給大家供大家參考,具體如下:
這里不手動(dòng)實(shí)現(xiàn)最小二乘,調(diào)用scipy庫(kù)中實(shí)現(xiàn)好的相關(guān)優(yōu)化函數(shù)。
考慮如下的含有4個(gè)參數(shù)的函數(shù)式:

構(gòu)造數(shù)據(jù)
import numpy as np from scipy import optimize import matplotlib.pyplot as plt def logistic4(x, A, B, C, D): return (A-D)/(1+(x/C)**B)+D def residuals(p, y, x): A, B, C, D = p return y - logisctic4(x, A, B, C, D) def peval(x, p): A, B, C, D = p return logistic4(x, A, B, C, D) A, B, C, D = .5, 2.5, 8, 7.3 x = np.linspace(0, 20, 20) y_true = logistic4(x, A, B, C, D) y_meas = y_true + 0.2 * np.random.randn(len(y_true))
調(diào)用工具箱函數(shù),進(jìn)行優(yōu)化
p0 = [1/2]*4
plesq = optimize.leastsq(residuals, p0, args=(y_meas, x))
# leastsq函數(shù)的功能其實(shí)是根據(jù)誤差(y_meas-y_true)
# 估計(jì)模型(也即函數(shù))的參數(shù)
繪圖
plt.figure(figsize=(6, 4.5))
plt.plot(x, peval(x, plesq[0]), x, y_meas, 'o', x, y_true)
plt.legend(['Fit', 'Noisy', 'True'], loc='upper left')
plt.title('least square for the noisy data (measurements)')
for i, (param, true, est) in enumerate(zip('ABCD', [A, B, C, D], plesq[0])):
plt.text(11, 2-i*.5, '{} = {:.2f}, est({:.2f}) = {:.2f}'.format(param, true, param, est))
plt.savefig('./logisitic.png')
plt.show()

PS:這里再為大家推薦兩款相似的在線工具供大家參考:
在線多項(xiàng)式曲線及曲線函數(shù)擬合工具:
http://tools.jb51.net/jisuanqi/create_fun
在線繪制多項(xiàng)式/函數(shù)曲線圖形工具:
http://tools.jb51.net/jisuanqi/fun_draw
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python實(shí)現(xiàn)應(yīng)用程序在右鍵菜單中添加打開(kāi)方式功能
這篇文章主要介紹了python實(shí)現(xiàn)應(yīng)用程序在右鍵菜單中添加打開(kāi)方式功能,本文分步驟給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-01-01
Python處理函數(shù)調(diào)用超時(shí)的四種方法
在實(shí)際開(kāi)發(fā)過(guò)程中,我們可能會(huì)遇到一些場(chǎng)景,需要對(duì)函數(shù)的執(zhí)行時(shí)間進(jìn)行限制,例如,當(dāng)一個(gè)函數(shù)執(zhí)行時(shí)間過(guò)長(zhǎng)時(shí),可能會(huì)導(dǎo)致程序卡頓、資源占用過(guò)高,因此,在某些情況下,我們希望限制函數(shù)調(diào)用的最大時(shí)所以本文給大家介紹了Python處理函數(shù)調(diào)用超時(shí)的四種方法2025-04-04
pytorch 實(shí)現(xiàn)計(jì)算 kl散度 F.kl_div()
這篇文章主要介紹了pytorch 實(shí)現(xiàn)計(jì)算 kl散度 F.kl_div(),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
Python中requests庫(kù)的學(xué)習(xí)方法詳解
這篇文章主要為大家詳細(xì)介紹了Python中requests庫(kù)的學(xué)習(xí)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-02-02
python3.9安裝RobotFramework的簡(jiǎn)單教程
python3.9安裝RobotFramework,不同于python2.7和python3.6,使用這兩個(gè)版本安裝會(huì)出現(xiàn)問(wèn)題,因?yàn)槲野惭b遇到問(wèn)題發(fā)現(xiàn)沒(méi)有最新的教程,所以打算自己寫(xiě)一個(gè),同時(shí)下面會(huì)記錄安裝步驟及使用的方法會(huì)出現(xiàn)的一些問(wèn)題,對(duì)python3.9安裝RobotFramework感興趣的朋友一起看看吧2023-01-01
Python中內(nèi)存管理機(jī)制與優(yōu)化技巧分享
這篇文章主要來(lái)和大家簡(jiǎn)單聊一聊Python中的內(nèi)存管理,從而可以幫助大家寫(xiě)出更高效,優(yōu)化內(nèi)存占用的 Python 代碼,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04
通過(guò)Python的gtts庫(kù)將文字轉(zhuǎn)為音頻的操作方法
文字轉(zhuǎn)音頻可以幫助視覺(jué)障礙者通過(guò)聽(tīng)取聲音來(lái)獲取信息,也可以幫助人們方便地聽(tīng)取一些長(zhǎng)篇文章或?qū)W習(xí)資料,節(jié)省閱讀時(shí)間和疲勞,這篇文章主要介紹了通過(guò)Python的gtts庫(kù)將文字轉(zhuǎn)為音頻的方法,需要的朋友可以參考下2023-05-05
Python turtle實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了Python turtle實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
python實(shí)現(xiàn)數(shù)據(jù)挖掘中分箱的示例代碼
數(shù)據(jù)分箱(英語(yǔ):Data?binning)是一種數(shù)據(jù)預(yù)處理方法,用于最大限度地減少小觀測(cè)誤差的影響,本文主要為大家介紹了python實(shí)現(xiàn)數(shù)據(jù)分箱的相關(guān)知識(shí),感興趣的可以了解下2024-01-01
使用Python處理json字符串中的非法雙引號(hào)問(wèn)題
這篇文章主要介紹了使用Python處理json字符串中的非法雙引號(hào)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02

