Verrauschte Kurven optimal glätten
Betrachten Sie einen Datensatz, der durch Folgendes angenähert wird:
import numpy as np x = np.linspace(0, 2*np.pi, 100) y = np.sin(x) + np.random.random(100) * 0.2
Dies beinhaltet 20 % Variation. Ansätze wie UnivariateSpline und gleitende Durchschnitte weisen Einschränkungen auf.
Savitzky-Golay-Filter
Eine effektive Lösung ist der Savitzky-Golay-Filter, der in scipy verfügbar ist. Es verwendet die Regression der kleinsten Quadrate, um den Wert in der Mitte eines kleinen Fensters mithilfe eines Polynoms zu schätzen. Das Fenster verschiebt sich dann, um den Vorgang zu wiederholen, was zu einer optimierten Anpassung jedes Punkts führt.
import numpy as np import matplotlib.pyplot as plt from scipy.signal import savgol_filter x = np.linspace(0, 2*np.pi, 100) y = np.sin(x) + np.random.random(100) * 0.2 yhat = savgol_filter(y, 51, 3) # window size 51, polynomial order 3 plt.plot(x,y) plt.plot(x,yhat, color='red') plt.show()
Das obige ist der detaillierte Inhalt vonWie können verrauschte Datenkurven effektiv geglättet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!