scipy.odr.

模型#

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函数

函数相对于(可能是多维的)输入变量的雅可比矩阵。

fjacd(beta, x) –> @f_i(x,B)/@x_j

extra_argstuple, 可选

如果指定,extra_args 应该是一个元组,包含要传递给 fcnfjacbfjacd 的额外参数。每个函数将通过 apply(fcn, (beta, x) + extra_args) 被调用。

估计秩为1的类数组

从数据中提供拟合参数的估计值

estimate(data) –> estbeta

隐式布尔

如果为 TRUE,则指定模型是隐式的;即 fcn(beta, x) ~= 0 并且没有 y 数据可供拟合。

metadict, 可选

模型的元数据自由形式字典

方法

set_meta(**kwds)

使用这里提供的关键词和数据更新元数据字典。

注释

请注意,fcnfjacbfjacd 操作于 NumPy 数组并返回一个 NumPy 数组。estimate 对象接受 Data 类的一个实例。

以下是回调函数的参数和返回数组的形状规则:

x

如果输入数据是一维的,那么 x 是一个一维数组;即,x = array([1, 2, 3, ...]); x.shape = (n,)。如果输入数据是多维的,那么 x 是一个二维数组;即,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,)