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