【发布时间】:2020-12-23 12:12:45
【问题描述】:
我有多个变量和一系列实验结果,我想知道创建多项式拟合函数的最佳方法是什么。
前:
| 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 在这里所建议的那样: How can I use multiple dimensional polynomials with numpy.polynomial?
现在我想了解如何衡量准确性? 并确定多项式每个变量的最大次数。
【问题讨论】:
-
通常结果准确性是通过成本函数来衡量的。您可以尝试不同的平方误差函数,但我无法完全理解您的问题。
-
好吧,我从一个实验中收集了一些数据,并试图找到一个多项式拟合函数来描述它。
-
欢迎来到 SO!你在这里问了两个问题,所以我建议你把它们分开,以便未来的用户更容易找到它们。 :-)
-
哦,明白了。我误解了,因为它说的是参数。据我所知,参数是函数的静态系数,我认为您的意思是其中的变量。如果你有 3 个变量系统,基本上你可以使用 TensorFlow 逻辑回归系统,或者如果你想自己做。你可以创建一个具有任意系数的函数,并使用梯度下降之类的函数重新排列它们。希望对你有帮助
-
你看过
numpy.polyfit吗?如果有,您遇到的具体问题是什么?
标签: python python-3.x math