2012-02-07 12 views
12

Tôi đang sử dụng scipy.optimize.curve_fit() theo cách lặp lại.Lỗi thời gian chạy của đường cong SciPy, dừng lặp lại

Vấn đề của tôi là khi bao giờ nó là không thể để phù hợp với các thông số toàn bộ chương trình (và do đó lặp) dừng, đây là lỗi nó mang lại:

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

Tôi hiểu rằng tại sao nó có không thể phù hợp. Vấn đề của tôi là có cách nào tôi có thể viết chương trình trong Python 3.2.2 mà sẽ bỏ qua những sự cố như vậy và chỉ tiếp tục?

Trả lời

12

Bạn có thể sử dụng xử lý ngoại lệ Python chuẩn để bẫy lỗi được nêu lên bởi curve_fit trong trường hợp tối ưu hóa không tìm được giải pháp. Vì vậy, một cái gì đó như:

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

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

xây dựng Điều đó sẽ cho phép bạn nắm bắt và xử lý các tình trạng lỗi nêu ra bởi curve_fit mà không cần phải hủy bỏ chương trình của bạn.

+1

Cảm ơn bạn rất nhiều. Tôi mới sử dụng Python và lỗi này thực sự làm phiền tôi. Tôi đọc hướng dẫn sử dụng thủ tục xử lý lỗi cố gắng ngoại trừ và hiểu nó. Cảm ơn một lần nữa ... – makhlaghi

+1

Vì vậy, một từ nhanh chóng để bọc này lên. Có một lỗi như thế này (thậm chí khi được nâng lên, 'maxfev = 2000') có nghĩa là không thể thực hiện được, ví dụ, đường cong chúng ta đang cố gắng không vừa vặn, hoặc có thể không phù hợp với tất cả ? Cuối cùng, nếu bạn đang thử nghiệm một số luật, có phải lỗi này cho chúng tôi biết rằng chúng ta nên hủy bỏ chức năng mà lỗi được nêu ra không? – FaCoffee

Các vấn đề liên quan