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=Falsecov=False,则返回多项式系数数组 p

  • 如果 full=True,则返回数组元组 (p, resids, rank, s, rcond)。其中

    • p 是一个形状为 (M,)(M, K) 的数组,包含多项式系数。

    • resids 是平方残差之和,形状为 () 或 (K,)。

    • rank 是矩阵 x 的秩。

    • s 是矩阵 x 的奇异值。

    • rcond 作为数组。

  • 如果 full=Falsecov=True,则返回数组元组 (p, C)。其中

    • p 是一个形状为 (M,)(M, K) 的数组,包含多项式系数。

    • C 是形状为 (deg + 1, deg + 1)(deg + 1, deg + 1, 1) 的多项式系数的协方差矩阵。

返回类型:

Array | tuple[Array, …]

注意

numpy.polyfit() 的 polyfit 实现不同,jax.numpy.polyfit() 不会在秩缩减时发出警告,这表示矩阵条件不良。

另请参阅

示例

>>> 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=Truefull=False,则返回具有多项式系数和协方差矩阵的数组元组。

>>> p, C = jnp.polyfit(x, y, 2, cov=True)
>>> p.shape, C.shape
((3, 3), (3, 3, 1))