91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python曲線擬合怎么實現

發布時間:2023-05-06 14:32:54 來源:億速云 閱讀:123 作者:zzz 欄目:開發技術

今天小編給大家分享一下Python曲線擬合怎么實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

入門

scipy.optimize中,curve_fit函數可調用非線性最小二乘法進行函數擬合,例如,現在有一個高斯函數想要被擬合

Python曲線擬合怎么實現

則調用方法如下

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為參數;para為擬合評價
abc, para = curve_fit(gauss, x, y)
print(abc)
# [2.03042233 5.01182397 3.10994351]

其中,curve_fit在調用時輸入了三個參數,分別是擬合函數、自變量、因變量。返回值abcpara分別為擬合參數和擬合的協方差,最終得到abc的值與預設的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()

效果如下

Python曲線擬合怎么實現

參數

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已經用過之外,其他參數的含義為

  • p0 擬合參數初始值

  • sigma 相對精度要求

  • absolute_sigma絕對精度要求

  • check_finite有限性檢測開關

  • bounds擬合范圍

  • method擬合方法,可選‘lm’, ‘trf’, ‘dogbox’,與least_squares函數中定義相同

  • jac雅可比矩陣,與least_squares中定義相同

 最小二乘函數:least_squares

多元擬合

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

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

# 創建一個函數模型用來生成數據
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()
 
# 生成原始數據
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]

可以發現擬合結果與預設的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()

結果如下

Python曲線擬合怎么實現

以上就是“Python曲線擬合怎么實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁陵县| 吉水县| 靖宇县| 合作市| 荣成市| 鄂州市| 丰城市| 兴隆县| 山丹县| 鲁山县| 南京市| 通州区| 涟源市| 陵川县| 会东县| 邳州市| 高唐县| 镶黄旗| 庆云县| 南华县| 女性| 连城县| 济源市| 庆城县| 黔西| 新昌县| 天镇县| 乾安县| 萝北县| 洪洞县| 托克逊县| 南雄市| 丹江口市| 溧阳市| 北京市| 白朗县| 新干县| 喀什市| 永兴县| 高安市| 德格县|