Glättung von Kurven für verrauschte Daten: Ein umfassender Leitfaden
Beim Umgang mit Datensätzen, die Rauschen oder Unregelmäßigkeiten aufweisen, ist es entscheidend, effektive Techniken zu finden um diese Abweichungen zu glätten und den zugrunde liegenden Trend zu extrahieren. Dieser Artikel befasst sich mit verschiedenen Ansätzen zur Kurvenglättung und geht dabei auf die besondere Herausforderung des Umgangs mit Rauschen ein.
Univariate Spline-Funktion
Die UnivariateSpline-Funktion von Scipy ist eine gängige Option für Kurvenglättung. Es kann jedoch sein, dass Rauschen nicht immer effektiv verarbeitet wird, da es dazu neigt, die Daten zu überanpassen und zusätzliches Rauschen zu erzeugen.
Gleitender Durchschnitt
Ein gleitender Durchschnitt-Ansatz kann ebenfalls verwendet werden Dabei wird der Durchschnitt einer Teilmenge von Datenpunkten berechnet und dieser als geglätteter Wert verwendet. Die Auswahl einer geeigneten Verzögerung für den gleitenden Durchschnitt ist jedoch von entscheidender Bedeutung, um eine übermäßige Glättung oder Unteranpassung zu vermeiden.
Savitzky-Golay-Filter: Eine robuste Lösung
Der Savitzky-Golay-Filter erweist sich als robuste Lösung zur Glättung verrauschter Kurven. Es verwendet einen Ansatz der kleinsten Quadrate, um ein Polynom an ein kleines Fenster von Datenpunkten anzupassen. Durch Verschieben des Fensters und Wiederholen des Vorgangs wird jeder Punkt im Verhältnis zu seinen Nachbarn optimal angepasst.
Implementierung mit SciPy
Um den Savitzky-Golay-Filter in Python zu implementieren, Man kann die Funktion savitzky_golay() aus dem Kochbuchbeispiel oder die Funktion savgol_filter() aus der SciPy-Bibliothek verwenden. Der folgende Code zeigt, wie die Funktion savgol_filter() zum Glätten eines verrauschten Sinusdatensatzes verwendet wird:
import numpy as np import matplotlib.pyplot as plt from scipy.signal import savgol_filter # Generate noisy sinusoidal data x = np.linspace(0,2*np.pi,100) y = np.sin(x) + np.random.random(100) * 0.2 # Apply Savitzky-Golay filter yhat = savgol_filter(y, 51, 3) # window size 51, polynomial order 3 # Plot original and smoothed data plt.plot(x,y) plt.plot(x,yhat, color='red') plt.show()
Durch die Anwendung des Savitzky-Golay-Filters wird die verrauschte Sinuskurve effektiv geglättet, während der Gesamttrend erhalten bleibt. Dies zeigt die Wirksamkeit des Filters bei der Reduzierung von Rauschen und der Extraktion des zugrunde liegenden Signals.
Das obige ist der detaillierte Inhalt vonSo glätten Sie verrauschte Datenkurven: Eine umfassende Anleitung und Lösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!