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

新泰網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年開(kāi)始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
我們需要導(dǎo)入所需的庫(kù):
import numpy as np import matplotlib.pyplot as plt from scipy.optimize import curve_fit
接下來(lái),我們需要定義一個(gè)二元函數(shù),這里我們以一個(gè)簡(jiǎn)單的線性函數(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庫(kù)來(lái)生成隨機(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ī)噪聲。
接下來(lái),我們可以使用curve_fit函數(shù)來(lái)進(jìn)行二元函數(shù)擬合:
popt, pcov = curve_fit(func, x.T, y)
curve_fit函數(shù)會(huì)返回兩個(gè)值:popt和pcov,popt是一個(gè)包含最優(yōu)參數(shù)值的數(shù)組,pcov是一個(gè)協(xié)方差矩陣,用于描述參數(shù)估計(jì)的不確定性。
現(xiàn)在,我們可以使用擬合得到的參數(shù)值來(lái)計(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)入了所需的庫(kù),然后定義了一個(gè)二元函數(shù),接著,我們生成了一些模擬數(shù)據(jù),并使用curve_fit函數(shù)進(jìn)行擬合,我們繪制了原始數(shù)據(jù)點(diǎn)和擬合后的函數(shù)圖像,并計(jì)算了擬合的RSS和Rsquared,通過(guò)這個(gè)過(guò)程,我們可以更好地理解數(shù)據(jù)之間的關(guān)系,并為進(jìn)一步的數(shù)據(jù)分析和建模提供依據(jù)。
文章名稱(chēng):python二元函數(shù)擬合
瀏覽路徑:http://fisionsoft.com.cn/article/coocosi.html


咨詢(xún)
建站咨詢(xún)
