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