Model#
- class scipy.odr.Model(fcn, fjacb=None, fjacd=None, extra_args=None, estimate=None, implicit=0, meta=None)[源代码]#
Model 类存储有关您希望拟合的函数的信息。
它至少存储函数本身,并可选择存储计算拟合期间使用的雅可比矩阵的函数。此外,可以提供一个函数,该函数可以为拟合参数提供合理的起始值,可能基于数据集。
- 参数:
- fcn函数
fcn(beta, x) –> y
- fjacb函数
fcn 关于拟合参数 beta 的雅可比矩阵。
fjacb(beta, x) –> @f_i(x,B)/@B_j
- fjacd函数
fcn 关于(可能是多维的)输入变量的雅可比矩阵。
fjacd(beta, x) –> @f_i(x,B)/@x_j
- extra_args元组,可选
如果指定,extra_args 应该是一个额外的参数元组,用于传递给 fcn、fjacb 和 fjacd。每个函数都将通过 apply(fcn, (beta, x) + extra_args) 调用
- estimaterank-1 的 array_like
从数据提供对拟合参数的估计
estimate(data) –> estbeta
- implicit布尔值
如果为 TRUE,则指定模型是隐式的;即 fcn(beta, x) ~= 0 并且没有要拟合的 y 数据
- meta字典,可选
模型的自由格式元数据字典
注释
请注意,fcn、fjacb 和 fjacd 在 NumPy 数组上操作并返回 NumPy 数组。 estimate 对象采用 Data 类的实例。
以下是回调函数的参数和返回数组的形状规则
- x
如果输入数据是一维的,则 x 是 rank-1 数组;即,
x = array([1, 2, 3, ...]); x.shape = (n,)
如果输入数据是多维的,则 x 是 rank-2 数组;即,x = array([[1, 2, ...], [2, 4, ...]]); x.shape = (m, n)
。在所有情况下,它都具有与传递给odr
的输入数据数组相同的形状。m 是输入数据的维度,n 是观测次数。- y
如果响应变量是一维的,则 y 是 rank-1 数组,即,
y = array([2, 4, ...]); y.shape = (n,)
。如果响应变量是多维的,则 y 是 rank-2 数组,即,y = array([[2, 4, ...], [3, 6, ...]]); y.shape = (q, n)
,其中 q 是响应变量的维度。- beta
长度为 p 的 rank-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
,则返回数组只有 rank-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)使用此处提供的关键字和数据更新元数据字典。