模型#
- class scipy.odr.Model(fcn, fjacb=None, fjacd=None, extra_args=None, estimate=None, implicit=0, meta=None)[原始碼]#
Model
類別儲存了關於您想要擬合的函數的資訊。它至少儲存了函數本身,並且可選擇性地儲存用於計算擬合過程中使用的 Jacobian 矩陣的函數。此外,還可以提供一個函數,該函數可以為擬合參數提供合理的起始值,這些起始值可能基於給定的數據集。
- 參數:
- fcn函數
fcn(beta, x) –> y
- fjacb函數
fcn 關於擬合參數 beta 的 Jacobian 矩陣。
fjacb(beta, x) –> @f_i(x,B)/@B_j
- fjacd函數
fcn 關於(可能為多維)輸入變數的 Jacobian 矩陣。
fjacd(beta, x) –> @f_i(x,B)/@x_j
- extra_argstuple, 選項性
如果指定,extra_args 應該是一個額外參數的 tuple,用於傳遞給 fcn、fjacb 和 fjacd。每個函數都將被 apply(fcn, (beta, x) + extra_args) 呼叫
- estimate類似陣列,秩為 1
從數據中提供擬合參數的估計值
estimate(data) –> estbeta
- implicit布林值
如果為 TRUE,則指定模型是隱含的;即 fcn(beta, x) ~= 0 並且沒有 y 數據可供擬合
- metadict, 選項性
模型的中繼資料的自由格式字典
注意
請注意,fcn、fjacb 和 fjacd 操作 NumPy 陣列並返回 NumPy 陣列。estimate 物件接受 Data 類別的實例。
以下是回呼函數的參數和回傳陣列形狀的規則
- x
如果輸入數據是單維的,則 x 是秩為 1 的陣列;即,
x = array([1, 2, 3, ...]); x.shape = (n,)
。如果輸入數據是多維的,則 x 是秩為 2 的陣列;即,x = array([[1, 2, ...], [2, 4, ...]]); x.shape = (m, n)
。在所有情況下,它都具有與傳遞給odr
的輸入數據陣列相同的形狀。m 是輸入數據的維度,n 是觀測值的數量。- y
如果響應變數是單維的,則 y 是秩為 1 的陣列,即,
y = array([2, 4, ...]); y.shape = (n,)
。如果響應變數是多維的,則 y 是秩為 2 的陣列,即,y = array([[2, 4, ...], [3, 6, ...]]); y.shape = (q, n)
,其中 q 是響應變數的維度。- beta
長度為 p 的秩為 1 的陣列,其中 p 是參數的數量;即
beta = array([B_1, B_2, ..., B_p])
- fjacb
如果響應變數是多維的,則回傳陣列的形狀為
(q, p, n)
,使得fjacb(x,beta)[l,k,i] = d f_l(X,B)/d B_k
在第 i 個數據點上評估。如果q == 1
,則回傳陣列僅為秩 2,形狀為(p, n)
。- fjacd
與 fjacb 相同,只有回傳陣列的形狀為
(q, m, n)
,使得fjacd(x,beta)[l,j,i] = d f_l(X,B)/d X_j
在第 i 個數據點上。如果q == 1
,則回傳陣列的形狀為(m, n)
。如果m == 1
,則形狀為 (q, n)。如果 m == q == 1,則形狀為(n,)
。
方法
set_meta
(**kwds)使用此處提供的關鍵字和數據更新中繼資料字典。