运行时错误:未找到最佳参数:函数调用次数已达到最大限制maxfev = 800

4 投票
1 回答
20039 浏览
提问于 2025-04-18 06:38

我有一张图片,我会随机选择其中的一行,然后尝试在这一行上拟合一个高斯曲线。我使用的是scipy.optimize的curve_fit方法来进行高斯拟合。

选择随机行的方式是根据一个数组向量[10, 20, 40, 60, 100],这意味着在第一次尝试时,我会在这张图片中随机选择10行(因此,会有10个高斯拟合),然后再选择更多的行,依此类推。

大部分时候,代码运行得很好,但有时候我会遇到一个错误(尤其是当选择的行数比较多时,比如60行或更多),错误提示是没有找到最佳参数

我在StackOverflow上找到了一些类似的问题,但仍然无法解决这个问题。看起来这个问题在使用curve_fit方法时经常会出现。

1 个回答

6

激光束,可能吗? ;-)

不管怎样,问题可能出在那些被选中的行上,这些行的形状很难用高斯曲线来拟合,使用的是scipy的curve_fit函数。我首先建议你进行调试(比如使用Python的logging模块),看看错误是否只出现在特定的行上。

我的第二个建议是改变初始猜测,也就是给curve_fit一个更好的起点。从那些可以进行曲线拟合的行中,你应该能提取出一些参数。在其他行中,高斯曲线的平均值大致在同一个位置,幅度变化也不会太大。一个好的初始猜测肯定会帮助曲线拟合。

如果你想分析这个问题,我建议你同时做两件事:找出在800次迭代后曲线拟合失败的行,然后试着通过改变初始猜测来看看曲线拟合是否能成功。

撰写回答