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