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