2012-02-07 31 views
12

scipy.optimize.curve_fit() yinelemeli bir şekilde kullanıyorum.SciPy curve_fit çalışma zamanı hatası, yineleme durdurma

Benim sorunum bütün programı (ve dolayısıyla yinelemeyi) durur parametreleri sığdırmak edemiyor zaman hiç bu o verir hata olmasıdır:

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

anlıyorum sahip olduğu bu yüzden uyum sağlayamadı. Benim sorunum, programın Python 3.2.2'de bu tür olayları görmezden gelebilecek ve devam edecek herhangi bir yol var mıdır?

cevap

12

Optimizasyonun bir çözüm bulamadığı durumlarda, curve_fit tarafından yükseltilen hatayı yakalamak için standart Python istisna işlemlerini kullanabilirsiniz. Yani böyle bir şey:

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

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

O yapı sizi yakalamak ve program iptaline kalmadan curve_fit tarafından gündeme hata durumunu ele olanak verir.

+1

Çok teşekkür ederim. Python’da yeniyim ve bu hata beni gerçekten rahatsız ediyordu. Try-except hata işleme prosedürü hakkında kılavuzu okudum ve anladım. Tekrar teşekkürler ... – makhlaghi

+1

Bu yüzden bir sarmak için hızlı bir kelime. Bu gibi bir hata ("maxfev = 2000" için yükseltildiğinde bile) uyumun mümkün olmadığı anlamına gelir, örneğin, sığmaya çalıştığımız eğri iyi bir uyum değil ya da hiç uygun olmayabilir ? Son olarak, eğer bir dizi kanunu test ediyorsanız, bu hatanın bize, hatanın oluştuğu fonksiyonu atmamız gerektiğini söyleyen bir hatadır mı? – FaCoffee

İlgili konular