ホームページ  >  記事  >  バックエンド開発  >  ノイズの多いデータ曲線を効果的に滑らかにする方法は?

ノイズの多いデータ曲線を効果的に滑らかにする方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-20 15:58:29643ブラウズ

How to Effectively Smoothen Noisy Data Curves?

ノイズの多い曲線の最適な平滑化

次のように近似されるデータセットを考えます。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。