找到多项式回归方程



我有多个可用值和一系列实验结果,我想知道创建多项式拟合函数的最佳方法是什么。

例如:

| param1   | param2 | param3| res|
|--------------------------------|
|0.5       | 0.004  |  40   |6.75|
|0.55      | 0.684  |   0   |10.1|
|0.6       | 0.001  | -40   |13.2|
...

到目前为止,我使用python找到了如下的政治规则:

import numpy as np
x = np.array([[0.5 ,0.004 ,40],[0.55, 0.684, 0],[0.6, 0.001, -40]...more parameters values ..]) # matrix describing all parameters
z = [6.75, 10.1, 13.2, ....more results....] # vector to describe all results according to parameters
degrees = [(i, j, k) for i in range(3) for j in range(3) for k in range(3)]  # list of monomials x**i * y**j to use
matrix = np.stack([np.prod(x**d, axis=1) for d in degrees], axis=-1)   # stack monomials like columns
coeff = np.linalg.lstsq(matrix, z)[0]    # lstsq returns some additional info we ignore
fit = np.dot(matrix, coeff)

如#user6655984所建议:如何将多维多项式与numpy.polynomial一起使用?

现在我想知道如何测量精度?并且确定多项式的每个变量的最大程度。

最佳方式始终取决于您的标准。如果你想最小化平方误差,你可以使用numpy函数polyfit。您可以选择多项式的阶数(在您的情况下为3(,它将返回解和残差。

你也可以使用最小二乘法,但你必须自己定义矩阵"A";然后是你的参数矩阵,b是你的实验结果。

最新更新