gpt4 book ai didi

python - 通过某些点的值获取函数

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:16 25 4
gpt4 key购买 nike

假设我有一个我想近似的假设函数:

def f(x):
return a * x ** 2 + b * x + c

abc 是我不知道的值。

我有一些已知函数输出的点,即

x = [-1, 2, 5, 100]
y = [123, 456, 789, 1255]

(实际上还有更多的值)

我想得到 abc,同时最小化平方误差(并另外获得那个平方误差)。

在 Python 中有什么方法可以做到这一点?

scipynumpy 或类似的地方应该有现成的解决方案。

最佳答案

由于您要拟合的函数是多项式,因此您可以使用 numpy.polyfit

>>> numpy.polyfit(x, y, 2) # The 2 signifies a polynomial of degree 2
array([ -1.04978546, 115.16698544, 236.16191491])

这意味着最佳拟合是 y ~ -1.05 x2 + 115.157x + 236.16

对于一般函数,您对它了解得越多(例如,它是凸函数、可微分函数、二次可微分函数等),您使用 scipy.optimize.minimize 的效果就越好.例如,如果您对它几乎一无所知,您可以使用它指定使用 Nelder-Mead 方法。那里的其他方法(请参阅文档)可以使用 Jacobian 和 Hessian,如果它们已定义,您可以计算它们。

就我个人而言,我发现将它与 Nelder-Mead 一起使用(几乎不需要任何参数)可以为我提供足够的结果来满足我的需求。


示例

假设您正尝试将 y = kxk 作为优化参数。你会写一个函数

x = ...
y = ...

def ss(k):
# use numpy.linalg.norm to find the sum-of-squares error between y and kx

然后您将在函数 ss 上使用 scipy.optimize.minimize

关于python - 通过某些点的值获取函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35582612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com