加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用Python单调递减曲线拟合

发布时间:2020-12-20 13:40:13 所属栏目:Python 来源:网络整理
导读:我有一组数据点,如图所示. 我需要在这些点上拟合曲线,使得曲线单调递减.曲线没有指定的函数形式.我是第一次尝试曲线拟合,一般来说,我想知道如何继续选择某些功能,适合它们并比较它们适合选择最佳功能. 我认为,对于单调递减的曲线,一个约束是一阶导数是负的.
我有一组数据点,如图所示.

我需要在这些点上拟合曲线,使得曲线单调递减.曲线没有指定的函数形式.我是第一次尝试曲线拟合,一般来说,我想知道如何继续选择某些功能,适合它们并比较它们适合选择最佳功能.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读