Nit*_*tin 5 python numpy scipy
我有一组数据点,如图所示。

我需要将曲线拟合到这些点,以使曲线单调递减。曲线没有指定的功能形式。我第一次尝试曲线拟合,总的来说,我想知道如何继续进行某些功能的选择,拟合和比较拟合以选择最佳功能。
我认为对于单调递减的曲线,约束条件是一阶导数为负。我正在查看scipy.curve_fit和scipy.interpolate.UnivariateSpline函数,但是它们似乎没有约束拟合的选项。在这种情况下使用的最佳功能是什么?谢谢。
恐怕没有通用功能适配的包。您必须选择并定义您的功能空间。当你这样做时,它肯定是有限的,并且向系数添加约束以确保你的函数递减是没有问题的。
此外,您必须选择度量/目标函数。您想最小化 SSE 还是您的观点有一定的权重?或者也许是一个完全不同的目标?
你可以从这样的事情开始:
import numpy as np
impoty scipy.optimize as opt
def objective(pars):
a, b, c = pars
return np.sum((y-(a*np.exp(-b*x)+c))**2)
opt.minimize(objective, x0=np.array([12000, 0.3, 2000]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1198 次 |
| 最近记录: |