2012-02-07 19 views
12

Estoy usando scipy.optimize.curve_fit() de forma iterativa.SciPy error de tiempo de ejecución de curve_fit, detención de la iteración

Mi problema es que cuando cada vez es incapaz de adaptarse a los parámetros de todo el programa (y por lo tanto la iteración) se detiene, este es el error que da:

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

entiendo que por lo que tiene sido incapaz de caber Mi problema es que ¿hay alguna forma de que pueda escribir el programa en Python 3.2.2 que ignorará esas ocurrencias y simplemente continuará?

Respuesta

12

Puede utilizar el manejo de excepciones estándar de Python para capturar el error planteado por curve_fit en los casos en que la optimización no puede encontrar una solución. Así que algo como:

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

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

esa construcción le permitirá capturar y manejar la condición de error planteada por curve_fit abortar sin tener su programa.

+1

Muchas gracias. Soy nuevo en Python y este error realmente me molestaba. Leí el manual sobre el procedimiento de manejo de errores try-except y lo entendí. Gracias de nuevo ... – makhlaghi

+1

Así que una palabra rápida para terminar esto. ¿Un error como este (incluso cuando se eleva a, digamos, 'maxfev = 2000') significa que el ajuste no es posible, por ejemplo, la curva que estamos tratando de encajar no es una buena opción, o tal vez no un ajuste en absoluto ? En última instancia, si está probando varias leyes, ¿este error nos dice que deberíamos descartar la función para la cual se generó el error? – FaCoffee

Cuestiones relacionadas