2012-02-07 8 views
12

Sto usando scipy.optimize.curve_fit() in modo iterativo.Errore di runtime di curva_fit SciPy, interruzione iterazione

Il mio problema è che, quando mai si è in grado di adattare i parametri di tutto il programma (e quindi l'iterazione) si ferma, questo è l'errore che dà:

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

ho capito che il motivo per cui ha stato incapace di adattarsi. Il mio problema è che c'è un modo per scrivere il programma in Python 3.2.2 che ignorerà tali occorrenze e continuerò?

risposta

12

È possibile utilizzare la gestione delle eccezioni Python standard per intercettare l'errore generato da curve_fit nei casi in cui l'ottimizzazione non riesce a trovare una soluzione. Quindi, qualcosa di simile a:

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

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

che costruiscono vi permetterà di catturare e gestire la condizione di errore sollevata dal curve_fit senza avere il programma di interruzione.

+1

Grazie mille. Sono nuovo di Python e questo errore mi ha davvero infastidito. Ho letto il manuale sulla procedura di gestione degli errori try-except e l'ho capito. Grazie ancora ... – makhlaghi

+1

Quindi una parola veloce per concludere. Un errore come questo (anche quando è elevato a, ad esempio, 'maxfev = 2000') significa che l'adattamento non è possibile, ad esempio, la curva che stiamo cercando di adattare non è una buona misura, o forse non è affatto adatta ? In definitiva, se stai testando un numero di leggi, questo errore ci dice che dovremmo eliminare la funzione per cui è stato generato l'errore? – FaCoffee

Problemi correlati