ホームページ >バックエンド開発 >Python チュートリアル >ノイズの多いデータ曲線を効果的に滑らかにする方法は?
ノイズの多い曲線の最適な平滑化
次のように近似されるデータセットを考えます。
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 中国語 Web サイトの他の関連記事を参照してください。