優化平滑雜訊曲線
考慮近似的資料集:
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