欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python曲線擬合詳解

 更新時(shí)間:2023年04月20日 08:53:52   作者:微小冷  
這篇文章主要介紹了關(guān)于python曲線擬合,scipy.optimize中,curve_fit函數(shù)可調(diào)用非線性最小二乘法進(jìn)行函數(shù)擬合,文中有詳細(xì)的代碼作為參考,需要的朋友可以閱讀參考

入門

scipy.optimize中,curve_fit函數(shù)可調(diào)用非線性最小二乘法進(jìn)行函數(shù)擬合,例如,現(xiàn)在有一個(gè)高斯函數(shù)想要被擬合

則調(diào)用方法如下

import numpy as np
from scipy.optimize import curve_fit
def gauss(x, a, b, c):
    return a*np.exp(-(x-b)**2/c**2)

x = np.arange(100)/10
y = gauss(x, 2, 5, 3) + np.random.rand(100)/10

# 非線性擬合 abc為參數(shù);para為擬合評(píng)價(jià)
abc, para = curve_fit(gauss, x, y)
print(abc)
# [2.03042233 5.01182397 3.10994351]

其中,curve_fit在調(diào)用時(shí)輸入了三個(gè)參數(shù),分別是擬合函數(shù)、自變量、因變量。返回值abcpara分別為擬合參數(shù)和擬合的協(xié)方差,最終得到abc的值與預(yù)設(shè)的2,0.5, 3是比較接近的,其擬合效果可以畫圖查看一下

import matplotlib.pyplot as plt
plt.scatter(x, y, marker='.')

Y = gauss(x, *abc)
plt.plot(x, Y, lw=1)
plt.show()

效果如下

參數(shù)

curve_fit的裝形式如下

curve_fit(f, xdata, ydata, p0=None, sigma=None, absolute_sigma=False, check_finite=True, bounds=(-inf, inf), method=None, jac=None, *, full_output=False, **kwargs)

除了f, xdata, ydata已經(jīng)用過之外,其他參數(shù)的含義為

  • p0 擬合參數(shù)初始值
  • sigma 相對(duì)精度要求
  • absolute_sigma絕對(duì)精度要求
  • check_finite有限性檢測(cè)開關(guān)
  • bounds擬合范圍
  • method擬合方法,可選‘lm’, ‘trf’, ‘dogbox’,與least_squares函數(shù)中定義相同
  • jac雅可比矩陣,與least_squares中定義相同

 最小二乘函數(shù):least_squares

多元擬合

盡管curve_fit的參數(shù)列表中,只給出了xdata, ydata作為擬合參數(shù),而xdata只有一組,但curve_fit是具備多元擬合潛力的。

唯一需要注意的是,當(dāng)多元擬合函數(shù)的返回值必須為一維數(shù)組,示例如下

# 創(chuàng)建一個(gè)函數(shù)模型用來生成數(shù)據(jù)
def func1(x, a, b, c, d):
    r = a * np.exp(-((x[0] - b) ** 2 + (x[1] - d) ** 2) / (2 * c ** 2))
    return r.ravel()
 
# 生成原始數(shù)據(jù)
xx = np.indices([10, 10])
z = func1(xx, 10, 5, 2, 5) + np.random.normal(size=100)/100
abcd, para = curve_fit(func1, xx, z)
print(abcd)
# [10.00258587  5.00146314  1.99952885  5.00138184]

可以發(fā)現(xiàn)擬合結(jié)果與預(yù)設(shè)的abcd還是比較接近的,下面繪制三維圖像來更加直觀地查看一下

z = z.reshape(10, 10)
Z = func1(xx, *abcd).reshape(10,10)

ax = plt.subplot(projection='3d')
ax.scatter3D(xx[0], xx[1], z, color='red')
ax.plot_surface(xx[0], xx[1], Z, cmap='rainbow')
plt.show()

結(jié)果如下

到此這篇關(guān)于Python曲線擬合詳解的文章就介紹到這了,更多相關(guān)Python曲線擬合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中eval與int的區(qū)別淺析

    python中eval與int的區(qū)別淺析

    這篇文章主要給大家介紹了關(guān)于python中eval與int的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 利用Python連接Oracle數(shù)據(jù)庫的基本操作指南

    利用Python連接Oracle數(shù)據(jù)庫的基本操作指南

    由于之前的在職的公司沒有機(jī)會(huì)接觸到Oralce數(shù)據(jù)庫,所以就沒有用python連接過Oralce,之前大多集中在連接mysql和sql server,最近在做一下web自動(dòng)化的工作,所以簡(jiǎn)單的記錄一下,下面這篇文章主要給大家介紹了關(guān)于利用Python連接Oracle數(shù)據(jù)庫的基本操作,需要的朋友可以參考下
    2022-06-06
  • 使用python+whoosh實(shí)現(xiàn)全文檢索

    使用python+whoosh實(shí)現(xiàn)全文檢索

    今天小編就為大家分享一篇使用python+whoosh實(shí)現(xiàn)全文檢索,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python爬取企查查企業(yè)信息之selenium自動(dòng)模擬登錄企查查

    python爬取企查查企業(yè)信息之selenium自動(dòng)模擬登錄企查查

    這篇文章主要介紹了python爬取企查查企業(yè)信息之自動(dòng)模擬登錄企查查以及selenium獲取headers,selenium獲取cookie,需要的朋友可以參考下
    2021-04-04
  • 詳解Python自動(dòng)化之文件自動(dòng)化處理

    詳解Python自動(dòng)化之文件自動(dòng)化處理

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識(shí),文章圍繞著Python文件自動(dòng)化處理展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 超詳細(xì)注釋之OpenCV dlib實(shí)現(xiàn)人臉采集

    超詳細(xì)注釋之OpenCV dlib實(shí)現(xiàn)人臉采集

    這篇文章主要介紹了OpenCV dlib實(shí)現(xiàn)人臉采集,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • 利用Python查看微信共同好友功能的實(shí)現(xiàn)代碼

    利用Python查看微信共同好友功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了利用Python查看微信共同好友功能的實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-04-04
  • PyQt5實(shí)現(xiàn)QLineEdit添加clicked信號(hào)的方法

    PyQt5實(shí)現(xiàn)QLineEdit添加clicked信號(hào)的方法

    今天小編就為大家分享一篇PyQt5實(shí)現(xiàn)QLineEdit添加clicked信號(hào)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python基本類型的連接組合和互相轉(zhuǎn)換方式(13種)

    Python基本類型的連接組合和互相轉(zhuǎn)換方式(13種)

    這篇文章主要介紹了Python中基本類型的連接組合和互相轉(zhuǎn)換13種方式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python中魔術(shù)方法的定義及一些常用方法

    Python中魔術(shù)方法的定義及一些常用方法

    所有以雙下劃線__包起來的方法,統(tǒng)稱為Magic Method(魔術(shù)方法),它是一種的特殊方法,這篇文章主要給大家介紹了關(guān)于Python中魔術(shù)方法的定義及一些常用方法,需要的朋友可以參考下
    2024-02-02

最新評(píng)論