微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

运行时错误:未找到最佳参数:对函数的调用次数已达到 maxfev

如何解决运行时错误:未找到最佳参数:对函数的调用次数已达到 maxfev

我在尝试运行 scipy.optimize.curve_fit() 以将正弦曲线拟合到数据时遇到此错误。查看其他问题,我尝试将 maxfev 的值一直增加到一百万,但它仍然不会收敛。

我还检查了我用于 sigma 的数组(这实际上不是错误,因为我们没有它,而是一个粗略的近似值)中是否有任何零,因为这会导致它跳闸,但它没有'不。有时确实会出现除以零的错误,但我不知道是什么原因造成的,而且我无法始终如一地复制它。

这是我拟合的数据;它显然有一个正弦趋势,我已经尽可能地设置了初始参数以匹配该图。

enter image description here

当我的时间范围较小时它有效;它只是停留在较大的数据集上。

enter image description here

这是代码行:

params,params_covariance = optimize.curve_fit(test_func,array,avg_radon,p0=[naverage_true,nstd,np.pi/365,1],sigma = npercent,maxfev=10000)

要拟合的函数在哪里

def test_func(x,P0,P1,P2,P3):
        return P0 + P1 * np.sin(P2*(x-P3))

初始参数是函数的平均值、标准偏差(振幅)、一年的时间段以及我不太确定的偏移。我还尝试使用较小数据集的最佳参数进行初始化,并且没有骰子。

再次重申:我已尝试增加 maxfev 并检查 sigma 是否为零,这是我能找到的此表单的所有其他问题中建议的解决方案。

编辑:我发现只有在运行较小的数据集后直接运行较大的数据集时,才会得到除以零误差。这意味着什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。