优化平滑噪声曲线
考虑一个近似为的数据集:
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 过滤器
一个有效的解决方案是 scipy 中提供的 Savitzky-Golay 过滤器。它使用最小二乘回归来使用多项式估计小窗口中心的值。然后窗口移动以重复该过程,从而对每个点进行优化调整。
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()
以上是如何有效平滑噪声数据曲线?的详细内容。更多信息请关注PHP中文网其他相关文章!