Mehrere Funktionen parallel mit globalen Parametern fitten möglich?

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
HrSumsemann
User
Beiträge: 28
Registriert: Donnerstag 19. Februar 2015, 17:32

Hallo allerseits,

ich habe mehrere Datensätze, welche jeweils mit einer anderen Funktion beschrieben werden. Die zu fittenden Prameter sind jedoch bei jeder Funktion gleich. Ist es möglich einen Fit für alle Funktinen und Datensätze parallel durchzuführen und so einen Parametersatz zu erzeugen, welcher einen Bestfit für alle darstellt?

Danke
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@HrSumsemann: Dazu mußt Du ja nur eine Funktion schreiben, die die drei Einzel-Merit-Funktionen passend kombiniert.
HrSumsemann
User
Beiträge: 28
Registriert: Donnerstag 19. Februar 2015, 17:32

Danke für die Antwort,

ich habe jetzt erstmal zum Üben versucht, eine einzelne Funktion mit Minimize anzufitten, jedoch passiert da nichts:

Code: Alles auswählen

from lmfit import minimize, Parameters, Parameter, report_fit
import numpy as np

x = np.array([1., 2., 3., 4., 5., 6., 7., 8.])
y = np.array([2., 4., 6., 8., 10., 12., 14., 16.])

def simple_fit(params, x, y):

    a = params['a'].value

    _y = a * x
    return _y - y

params = Parameters()
params.add('a', value=0, min=0, max=1000)
result = minimize(simple_fit, params, args=(x, y))

report_fit(params)
Das bekomme ich raus:
[[Variables]]
a: 0 (init= 0)
[[Correlations]] (unreported correlations are < 0.100)

Hat jemand einen Tipp, was ich falsch mache?
HrSumsemann
User
Beiträge: 28
Registriert: Donnerstag 19. Februar 2015, 17:32

Hat niemand einen Tip?
HrSumsemann
User
Beiträge: 28
Registriert: Donnerstag 19. Februar 2015, 17:32

Habe es hinbekommen, fehler war: report_fit(params)
Es muss report_fit(result.params) heißen.


Danke
Antworten