Suavizar curvas con ruido de conjuntos de datos: una guía práctica
Suavizar curvas para conjuntos de datos ruidosos es un desafío común en el análisis de datos. Para solucionar esto, considere un conjunto de datos con una variación del 20 % debido al ruido:
import numpy as np x = np.linspace(0, 2*np.pi, 100) y = np.sin(x) np.random.random(100) * 0.2
Para esta situación, el filtro Savitzky-Golay es una opción eficaz. Este filtro funciona ajustando un polinomio a una ventana de puntos de datos y usando el polinomio para estimar el valor en el centro de la ventana. Luego, la ventana se desplaza a lo largo de los datos y el proceso se repite, lo que da como resultado una curva suavizada.
A continuación se explica cómo implementar el filtro Savitzky-Golay en Python:
import numpy as np
import matplotlib.pyplot as plt
yhat = savgol_filter(y, 51, 3) # window size 51, polynomial order 3
plt.plot(x, y)
plt.plot(x, yhat, color='red')
plt.show()
La curva resultante será más suave que la original y al mismo tiempo conservará la señal subyacente.
Nota: Si no tiene la función savgol_filter disponible, puede instalarlo usando el siguiente comando:
pip install scipy
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