RuntimeError:找不到最佳参数:函数调用次数已达到maxfev = 800

时间:2014-05-15 08:20:30

标签: python random scipy

我有一个图像,我在其中选择一个randow行并尝试在该行中拟合高斯曲线。我正在使用 scipy.optimize curve_fit方法来拟合​​高斯分布。

randow行的选择是根据数组向量[10,20,40,60,100],这意味着在第一次尝试中我在该图像中选择10个randow行(因此,10个Gaussian拟合),然后,选择更多行等等。

大部分时间,代码都在工作,但是,有时我会收到错误(特别是当行数很大时:大约60或更多),这表示找不到最佳参数

我在stackoverflow中发现了一些类似的帖子,但仍然无法解决这个问题。看起来这个问题经常出现在 curve_fit方法中。

1 个答案:

答案 0 :(得分:6)

激光束,任何机会? ; - )

无论如何,问题可能是被选中的行是"硬"通过scipy's curve_fit函数拟合高斯曲线。我的第一个建议是调试(使用例如python'} logging模块)以查看错误是否仅在特定行上弹出。

我的第二个建议是更改curve_fit的初始猜测。从可以进行曲线拟合的行中,您应该能够提取一些参数。在其他行上,高斯的平均值处于大致相同的位置,并且度数也不会变化太多。一个好的初始猜测肯定有助于曲线拟合。

如果你想分析这个问题,我肯定会同时做到这两点:尝试找到800次迭代后曲线拟合失败的行。然后通过改变初始猜测来查看曲线拟合是否有效。