jax.numpy.polyfit

内容

jax.numpy.polyfit#

jax.numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)[source]#

对数据进行最小二乘多项式拟合。

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))