2012-02-07 118 views
12

我以迭代方式使用scipy.optimize.curve_fit()SciPy curve_fit運行時錯誤,停止迭代

我的問題是,當以往任何時候都無法適應參數整個方案(從而迭代)停止,這是它給人的錯誤:

RuntimeError: Optimal parameters not found: Number of calls to function has reached maxfev = 800.

我明白爲什麼它無法適應。我的問題是,有什麼辦法可以在Python 3.2.2中編寫程序,它會忽略這種情況並繼續?

回答

12

在優化未能找到解決方案的情況下,您可以使用標準Python異常處理來捕獲由curve_fit引發的錯誤。因此,像:

try: 
    popt,pcov = scipy.optimize.curve_fit(f, xdata, ydata, p0=None, sigma=None) 

except RuntimeError: 
    print("Error - curve_fit failed") 

該構造將讓你捕獲和處理由curve_fit引發的錯誤條件,而無需你的程序中止。

+1

非常感謝。我是Python的新手,這個錯誤真的困擾着我。我閱讀了try-except錯誤處理過程中的手冊並理解它。再次感謝... – makhlaghi 2012-02-08 01:16:17

+1

所以一個簡單的話來包裝起來。這樣的錯誤(即使是提高到「maxfev = 2000」)意味着不適合適合,例如我們試圖適合的曲線不適合,或者可能不適合?最終,如果你正在測試一些法律,這個錯誤是否告訴我們,我們應該拋棄引發錯誤的函數? – FaCoffee 2016-05-13 16:59:17