python - 使用 Python 单调递减曲线拟合

标签 python numpy scipy

我有一组数据点,如图所示。 enter image description here

我需要为这些点拟合一条曲线,使曲线单调递减。曲线没有指定的函数形式。我是第一次尝试曲线拟合,总的来说,我想知道如何继续选择某些函数、拟合它们并比较它们的拟合以选择最佳函数。

我认为对于单调递减的曲线,约束条件是一阶导数为负。我正在查看 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/

相关文章:

python - 尝试运行 py.test 时收集 setup.py 时出错?

python - 为什么三个 R、G 和 B 圆不能正确混合?

python - 如何在 Skype 上有来电时以编程方式暂停 Spotify

python - 以顺时针方式用一维数组填充二维数组 - NumPy/Python

python - 前向填充时间序列数据指定频率的某些列

python - 使用 numpy 将 alpha channel 添加到 RGB 数组

python - 具有离散值的 ODE 积分

python - python中的Matlab样条函数

python - Matplotlib 中的像素化动画

python - 基本数据类型(字符串和整数)在 Python 和 Perl 中是如何实现的