首頁  >  文章  >  後端開發  >  如何平滑雜訊資料曲線:綜合指南和解決方案

如何平滑雜訊資料曲線:綜合指南和解決方案

Linda Hamilton
Linda Hamilton原創
2024-10-20 15:57:29198瀏覽

How to Smooth Noisy Data Curves: A Comprehensive Guide and Solution

雜訊資料的平滑曲線:綜合指南

在處理中表現出雜訊或不規則性的資料集時,找到有效的技術變得至關重要消除這些偏差並提取潛在趨勢。本文深入研究了實現曲線平滑的各種方法,解決了處理雜訊的具體挑戰。

單變量樣條函數

Scipy 中的 UnivariateSpline 函數是曲線平滑。然而,它可能並不總是有效地處理噪聲,因為它往往會過度擬合數據並引入額外的噪聲。

移動平均

也可以採用移動平均方法,其中涉及計算資料點子集的平均值並將其用作平滑值。然而,為移動平均值選擇適當的延遲對於避免過度平滑或欠擬合至關重要。

Savitzky-Golay 濾波器:穩健的解決方案

Savitzky-Golay 濾波器成為平滑雜訊曲線的強大解決方案。它利用最小平方法將多項式擬合到小數據點視窗。透過移動視窗並重複此過程,每個點都會相對於其鄰居進行最佳調整。

使用SciPy 實作

要在Python 中實作Savitzky-Golay 過濾器,可以使用說明書範例提供的savitzky_golay() 函數或SciPy 程式庫中的savg函數。以下程式碼示範如何使用 savgol_filter() 函數平滑吵雜的正弦曲線資料集:

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter

# Generate noisy sinusoidal data
x = np.linspace(0,2*np.pi,100)
y = np.sin(x) + np.random.random(100) * 0.2

# Apply Savitzky-Golay filter
yhat = savgol_filter(y, 51, 3) # window size 51, polynomial order 3

# Plot original and smoothed data
plt.plot(x,y)
plt.plot(x,yhat, color='red')
plt.show()

透過套用 Savitzky-Golay 濾波器,可以有效平滑雜訊的正弦曲線,同時保留整體趨勢。這證明了濾波器在降低雜訊和提取潛在訊號方面的有效性。

以上是如何平滑雜訊資料曲線:綜合指南和解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn