ajustement exponentiel décroissance sans devinettes initiales

Que quelqu'un connait un scipy/numpy le module qui va permettre l'ajustement de la décroissance exponentielle de données?

De recherche de Google est retourné quelques billets de blog, par exemple - http://exnumerus.blogspot.com/2010/04/how-to-fit-exponential-decay-example-in.html , mais cette solution nécessite de y-offset-être pré-spécifié, ce qui n'est pas toujours possible

EDIT:

curve_fit fonctionne, mais il peut échoue assez lamentablement avec aucune estimation initiale des paramètres, et que c'est parfois nécessaire. Le code que j'ai travaille avec est

#!/usr/bin/env python
import numpy as np
import scipy as sp
import pylab as pl
from scipy.optimize.minpack import curve_fit

x = np.array([  50.,  110.,  170.,  230.,  290.,  350.,  410.,  470.,  
530.,  590.])
y = np.array([ 3173.,  2391.,  1726.,  1388.,  1057.,   786.,   598.,   
443.,   339.,   263.])

smoothx = np.linspace(x[0], x[-1], 20)

guess_a, guess_b, guess_c = 4000, -0.005, 100
guess = [guess_a, guess_b, guess_c]

exp_decay = lambda x, A, t, y0: A * np.exp(x * t) + y0

params, cov = curve_fit(exp_decay, x, y, p0=guess)

A, t, y0 = params

print "A = %s\nt = %s\ny0 = %s\n" % (A, t, y0)

pl.clf()
best_fit = lambda x: A * np.exp(t * x) + y0

pl.plot(x, y, 'b.')
pl.plot(smoothx, best_fit(smoothx), 'r-')
pl.show()

qui fonctionne, mais si on enlève "p0=deviner", il échoue lamentablement.

source d'informationauteur George Karpenkov