Model#
- 类 scipy.odr.Model(fcn, fjacb=无, fjacd=无, extra_args=无, estimate=无, implicit=0, meta=无)[源代码]#
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) 调用
- estimate秩为 1 的数组类似物
提供从数据估算的拟合参数
estimate(data) –> estbeta
- implicit布尔值
如果为 TRUE,则指定模型为隐式模型;即 fcn(beta, x) ~= 0 且没有针对 y 数据拟合
- meta可选参数,字典
为模型的元数据指定的自由格式字典
注释
请注意,fcn、fjacb 和 fjacd 在 NumPy 数组上执行操作并返回一个 NumPy 数组。 estimate 对象采用数据类的实例。
以下列出回调函数的参数形状和返回数组的规则
- 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)使用此处提供的关键字和数据更新元数据词典。