Warum passt scipy.optimize.curve_fit nicht in die Daten, wenn eine große Lücke zwischen zwei Gruppen von gleichmäßig verPython

Python-Programme
Anonymous
 Warum passt scipy.optimize.curve_fit nicht in die Daten, wenn eine große Lücke zwischen zwei Gruppen von gleichmäßig ver

Post by Anonymous »

Ich habe also eine glockenförmige Verteilung von Punkten, auf die ich eine Gaußsche Funktion anpassen möchte. Höhepunkt dieser Glocke. Die Verteilung und der Ort dieser Lücke sind immer symmetrisch. Meine Daten.
Die Funktion, die ich verwende, ist scipy.optimize.curve_fit mit einer ungebundenen Methode mit der kleinsten Quadrate.
Die Gaußsche Funktion, die ich verwende, hat die folgende Form: < /p>

Code: Select all

def gauss_function(self,x, a, b, c):
x = np.array(x)
return a*np.exp(-(x.astype(float)-b)**2/(2*c**2))
Im Folgenden finden Sie ein Diagramm der optimierten Gaußschen Anpassung meiner Daten, wenn keine Lücke vorhanden ist, die schwarze Linie die optimierte Funktion ist und die blauen Punkte die Daten sind: < Br/>
Ideen, wie man dies behebt, oder warum dies möglicherweise auftritt ? Insbesondere habe ich den y-Achse-Intercept hinzugefügt, e :

Code: Select all

def gauss_function(self,x, a, b, c, e):
x = np.array(x)
return a*np.exp(-(x.astype(float)-b)**2/(2*c**2))+e
< /code>
Dies hat das Problem nicht gelöst, stattdessen machte es die Anpassung der Daten, die keine Lücke hatten, schlimmer noch, da der Optimierer nun einen zusätzlichen Parameter einfügen musste. Der Parameter e 
ist in diesem Fall nicht einmal benötigt, da die Daten so verteilt sind Dann hatte ich die Idee, eine anfängliche Vermutung als P0 -attribut für die Funktion curve_fit für die Parameter basierend auf Funktionen, die sie zuvor zugefügt hatten, einzugeben. Dies hat funktioniert, aber es erfordert, dass die erste Kurve in meinem Datensatz eine ohne Lücke ist, und dies kann nicht immer garantiert werden. .

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post