【问题标题】:Finding a polynomial regression equasion找到一个多项式回归方程
【发布时间】: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


【解决方案1】:

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

您也可以为此使用least squares,但您必须自己定义矩阵。 “A”将是您的参数矩阵,b 是您的实验结果。

【讨论】:

    猜你喜欢
    • 2020-01-07
    • 2020-12-29
    • 2022-01-14
    • 1970-01-01
    • 2019-11-25
    • 2011-04-23
    • 2019-01-24
    • 2022-10-06
    • 1970-01-01
    相关资源
    最近更新 更多