我有一组数据点,如图所示。
我需要为这些点拟合一条曲线,使曲线单调递减。曲线没有指定的函数形式。我是第一次尝试曲线拟合,总的来说,我想知道如何继续选择某些函数、拟合它们并比较它们的拟合以选择最佳函数。
我认为对于单调递减的曲线,约束条件是一阶导数为负。我正在查看 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]))
关于python - 使用 Python 单调递减曲线拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21671346/