新聞中心
在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)中,我們經(jīng)常需要對數(shù)據(jù)進(jìn)行擬合,以便更好地理解數(shù)據(jù)之間的關(guān)系,二元函數(shù)擬合是指使用一個(gè)二元函數(shù)(即包含兩個(gè)自變量的函數(shù))來描述因變量與兩個(gè)自變量之間的關(guān)系,在Python中,我們可以使用SciPy庫中的curve_fit函數(shù)來實(shí)現(xiàn)二元函數(shù)擬合,本文將詳細(xì)介紹如何使用Python進(jìn)行二元函數(shù)擬合。

新泰網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
我們需要導(dǎo)入所需的庫:
import numpy as np import matplotlib.pyplot as plt from scipy.optimize import curve_fit
接下來,我們需要定義一個(gè)二元函數(shù),這里我們以一個(gè)簡單的線性函數(shù)為例:
def func(x, a, b, c):
return a * x[0] + b * x[1] + c
x是一個(gè)包含兩個(gè)自變量的數(shù)組,a、b、c是函數(shù)的參數(shù)。
現(xiàn)在,我們需要生成一些模擬數(shù)據(jù),我們可以使用numpy庫來生成隨機(jī)數(shù)據(jù):
np.random.seed(0) x = np.random.rand(100, 2) y = 3 * x[:, 0] + 2 * x[:, 1] + 1 + np.random.randn(100) * 0.5
這里,我們生成了一個(gè)包含100個(gè)點(diǎn)的數(shù)據(jù)集,每個(gè)點(diǎn)有兩個(gè)自變量和一個(gè)因變量,我們還添加了一些隨機(jī)噪聲。
接下來,我們可以使用curve_fit函數(shù)來進(jìn)行二元函數(shù)擬合:
popt, pcov = curve_fit(func, x.T, y)
curve_fit函數(shù)會返回兩個(gè)值:popt和pcov,popt是一個(gè)包含最優(yōu)參數(shù)值的數(shù)組,pcov是一個(gè)協(xié)方差矩陣,用于描述參數(shù)估計(jì)的不確定性。
現(xiàn)在,我們可以使用擬合得到的參數(shù)值來計(jì)算擬合后的函數(shù)值:
y_fit = func(x.T, *popt)
為了更直觀地展示擬合效果,我們可以繪制原始數(shù)據(jù)點(diǎn)和擬合后的函數(shù)圖像:
plt.scatter(x[:, 0], x[:, 1], c='r', label='Data') plt.plot(x[:, 0], y_fit, 'b', label='Fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt)) plt.legend() plt.show()
從圖中可以看出,擬合后的函數(shù)能夠較好地描述數(shù)據(jù)之間的關(guān)系。
我們可以計(jì)算擬合的殘差平方和(RSS)和確定系數(shù)(Rsquared):
rss = np.sum((y y_fit) ** 2)
r_squared = 1 (rss / np.sum((y np.mean(y)) ** 2))
print("RSS:", rss)
print("Rsquared:", r_squared)
RSS表示擬合后的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間的差異,而Rsquared表示擬合的好壞程度,Rsquared越接近1,表示擬合效果越好。
歸納一下,本文介紹了如何使用Python進(jìn)行二元函數(shù)擬合,我們首先導(dǎo)入了所需的庫,然后定義了一個(gè)二元函數(shù),接著,我們生成了一些模擬數(shù)據(jù),并使用curve_fit函數(shù)進(jìn)行擬合,我們繪制了原始數(shù)據(jù)點(diǎn)和擬合后的函數(shù)圖像,并計(jì)算了擬合的RSS和Rsquared,通過這個(gè)過程,我們可以更好地理解數(shù)據(jù)之間的關(guān)系,并為進(jìn)一步的數(shù)據(jù)分析和建模提供依據(jù)。
本文名稱:python二元函數(shù)擬合
標(biāo)題路徑:http://www.5511xx.com/article/coocosi.html


咨詢
建站咨詢
