"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo suavizar eficazmente las curvas de datos ruidosas?

¿Cómo suavizar eficazmente las curvas de datos ruidosas?

Publicado el 2024-11-06
Navegar:763

How to Effectively Smoothen Noisy Data Curves?

Suavizar de forma óptima las curvas ruidosas

Considere un conjunto de datos aproximado por:

import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)   np.random.random(100) * 0.2

Esto incluye una variación del 20%. Los enfoques como UnivariateSpline y las medias móviles presentan limitaciones.

Filtro Savitzky-Golay

Una solución eficaz es el filtro Savitzky-Golay, disponible en scipy. Utiliza regresión de mínimos cuadrados para estimar el valor en el centro de una ventana pequeña utilizando un polinomio. Luego, la ventana cambia para repetir el proceso, lo que da como resultado un ajuste optimizado de cada punto.

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()
Declaración de liberación Este artículo se reimprime en: 1729411035 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3