优化平滑噪声曲线
考虑近似的数据集:
import numpy as np x = np.linspace(0, 2*np.pi, 100) y = np.sin(x) np.random.random(100) * 0.2
这包括 20% 的变化。 UnivariateSpline 和移动平均线等方法存在局限性。
Savitzky-Golay 滤波器
一个有效的解决方案是 Savitzky-Golay 滤波器,可在 scipy 中使用。它使用最小二乘回归来使用多项式估计小窗口中心的值。然后窗口移动以重复该过程,从而对每个点进行优化调整。
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()
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3