2013-05-09 13 views

Odpowiedz

4

According to doc, optymalizacja z curve_fit daje

Optymalne wartości parametrów tak, aby suma błędu kwadratu f (xdata * popt) - ydata jest zminimalizowane

Następnie użyj optimize.leastsq

import scipy.optimize 
p,cov,infodict,mesg,ier = optimize.leastsq(
     residuals,a_guess,args=(x,y),full_output=True,warning=True) 

z tym dla residuals:

def residuals(a,x,y): 
    return y-f(x,a) 

residuals jest sposób powraca różnica pomiędzy faktycznym danych wyjściowych y modelu i wyjścia z f modelu, a parametr (y), x danych wejściowych.

Metoda optimize.leastsq wraca wiele informacji można użyć do obliczeniowej RSquared i RMSE samemu. Dla RSQuared można zrobić

ssErr = (infodict['fvec']**2).sum() 
ssTot = ((y-y.mean())**2).sum() 
rsquared = 1-(ssErr/ssTot) 

Więcej szczegółów na temat tego, co jest infodict['fvec']

In [48]: optimize.leastsq? 
... 
     infodict -- a dictionary of optional outputs with the keys: 
        'fvec' : the function evaluated at the output 
+0

Próbowałem za tobą, ale nie udało. Czy muszę używać zarówno curve_fit AND leastsq? I czy nie mogę użyć w jakiś sposób pcov z mojego curve_fit? Wracając do dokumentu, curve_fit już używa minimumsq - czy jest to informacja potrzebna do obliczenia r square nie przekazanego od minimumsq do curve_fit? – Woodpicker

+0

Najważniejsze, że jestem zdezorientowany, jeśli "a_guess" w funkcji minimumsq - co to znaczy? Dzięki ... – Woodpicker

+0

OK, to jest - to jest szacunek ... Działa teraz, dzięki – Woodpicker