jax.numpy.polyfit#
- jax.numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)[源代码]#
对数据进行最小二乘多项式拟合。
numpy.polyfit()
的 Jax 实现。给定一组数据点
(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, 3))