jax.numpy.polyfit#
- jax.numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)[源代码][源代码]#
最小二乘多项式拟合数据。
Jax 实现的
numpy.polyfit()
。给定一组数据点
(x, y)
和多项式的次数deg
,该函数找到一个形如以下的多项式方程:\[y = p(x) = p[0] x^{deg} + p[1] x^{deg - 1} + ... + p[deg]\]- 参数:
x (ArrayLike) – 形状为
(M,)
的数据点数组。y (ArrayLike) – 形状为
(M,)
或(M, K)
的数据点数组。deg (int) – 多项式的次数。它必须静态指定。
rcond (float | None) – 拟合的相对条件数。默认值为
len(x) * eps
。必须静态指定。full (bool) – 控制返回值的开关。默认值为
False
,它将返回值限制为多项式系数数组p
。如果为True
,函数返回一个元组(p, resids, rank, s, rcond)
。必须静态指定。w (ArrayLike | None) – 权重数组,形状为
(M,)
。如果为 None,则所有数据点被视为具有相同的权重。如果不为 None,则权重 \(w_i\) 应用于 \(x_i\) 处的未平方残差 \(y_i - \widehat{y}_i\),其中 \(\widehat{y}_i\) 是 \(y_i\) 的拟合值。默认值为 None。cov (bool) – 布尔值或字符串。如果为
True
,则返回由resids/(M-deg-1)
缩放的协方差矩阵以及多项式系数。如果cov='unscaled'
,则返回未缩放版本的协方差矩阵。默认值为False
。如果full=True
,则忽略cov
。它必须静态指定。
- 返回:
如果
full=False
且cov=False
,则为多项式系数数组p
。如果
full=True
,则返回数组元组(p, resids, rank, s, rcond)
。其中p
是一个形状为(M,)
或(M, K)
的数组,包含多项式系数。resids
是形状为 () 或 (K,) 的残差平方和。rank
是矩阵x
的秩。s
是矩阵x
的奇异值。rcond
作为数组。
如果
full=False
且cov=True
,则为数组的元组(p, C)
。p
是一个形状为(M,)
或(M, K)
的数组,包含多项式系数。C
是多项式系数的协方差矩阵,形状为(deg + 1, deg + 1)
或(deg + 1, deg + 1, 1)
。
- 返回类型:
备注
与
numpy.polyfit()
的 polyfit 实现不同,jax.numpy.polyfit()
在秩减少时不会发出警告,这表明矩阵条件不佳。参见
jax.numpy.poly()
: 找到给定根序列的多项式系数。jax.numpy.polyval()
: 在特定值处计算多项式。jax.numpy.roots()
: 计算给定系数的多项式的根。
示例
>>> x = jnp.array([3., 6., 9., 4.]) >>> y = jnp.array([[0, 1, 2], ... [2, 5, 7], ... [8, 4, 9], ... [1, 6, 3]]) >>> p = jnp.polyfit(x, y, 2) >>> with jnp.printoptions(precision=2, suppress=True): ... print(p) [[ 0.2 -0.35 -0.14] [-1.17 4.47 2.96] [ 1.95 -8.21 -5.93]]
如果
full=True
,返回一个数组元组,如下所示:>>> p, resids, rank, s, rcond = jnp.polyfit(x, y, 2, full=True) >>> with jnp.printoptions(precision=2, suppress=True): ... print("Polynomial Coefficients:", "\n", p, "\n", ... "Residuals:", resids, "\n", ... "Rank:", rank, "\n", ... "s:", s, "\n", ... "rcond:", rcond) Polynomial Coefficients: [[ 0.2 -0.35 -0.14] [-1.17 4.47 2.96] [ 1.95 -8.21 -5.93]] Residuals: [0.37 5.94 0.61] Rank: 3 s: [1.67 0.47 0.04] rcond: 4.7683716e-07
如果
cov=True
且full=False
,则返回一个包含多项式系数和协方差矩阵的数组元组。>>> p, C = jnp.polyfit(x, y, 2, cov=True) >>> p.shape, C.shape ((3, 3), (3, 3, 1))