Heim  >  Artikel  >  Backend-Entwicklung  >  Wie können verrauschte Datenkurven effektiv geglättet werden?

Wie können verrauschte Datenkurven effektiv geglättet werden?

Susan Sarandon
Susan SarandonOriginal
2024-10-20 15:58:29740Durchsuche

How to Effectively Smoothen Noisy Data Curves?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn