Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Melicinkan Keluk Data Bising: Panduan dan Penyelesaian Komprehensif

Cara Melicinkan Keluk Data Bising: Panduan dan Penyelesaian Komprehensif

Linda Hamilton
Linda Hamiltonasal
2024-10-20 15:57:29198semak imbas

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

Melicinkan Keluk untuk Data Bising: Panduan Komprehensif

Apabila berurusan dengan set data yang mempamerkan bunyi atau penyelewengan, adalah penting untuk mencari teknik yang berkesan untuk melancarkan penyelewengan ini dan mengekstrak arah aliran asas. Artikel ini menyelidiki pelbagai pendekatan untuk mencapai pelicinan lengkung, menangani cabaran khusus pengendalian hingar.

Fungsi Spline Univariate

Fungsi UnivariateSpline daripada Scipy ialah pilihan biasa untuk pelicinan lengkung. Walau bagaimanapun, ia mungkin tidak sentiasa mengendalikan hingar dengan berkesan, kerana ia cenderung melebihkan data dan memperkenalkan bunyi tambahan.

Purata Pergerakan

Pendekatan purata bergerak juga boleh digunakan , yang melibatkan pengiraan purata subset titik data dan menggunakan ini sebagai nilai terlicin. Walau bagaimanapun, memilih kelewatan yang sesuai untuk purata bergerak adalah penting untuk mengelakkan pelicinan atau kekurangan yang berlebihan.

Penapis Savitzky-Golay: Penyelesaian Teguh

Penapis Savitzky-Golay muncul sebagai penyelesaian yang teguh untuk melicinkan lengkung yang bising. Ia menggunakan pendekatan kuasa dua terkecil untuk menyesuaikan polinomial kepada tetingkap kecil titik data. Dengan mengalihkan tetingkap dan mengulangi proses, setiap titik dilaraskan secara optimum berbanding jirannya.

Pelaksanaan dengan SciPy

Untuk melaksanakan penapis Savitzky-Golay dalam Python, seseorang boleh menggunakan fungsi savitzky_golay() yang disediakan oleh contoh buku masakan atau fungsi savgol_filter() daripada perpustakaan SciPy. Kod berikut menunjukkan cara menggunakan fungsi savgol_filter() untuk melicinkan set data sinusoidal yang bising:

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()

Dengan menggunakan penapis Savitzky-Golay, sinusoid yang bising dilicinkan dengan berkesan sambil mengekalkan aliran keseluruhan. Ini menunjukkan keberkesanan penapis dalam mengurangkan hingar dan mengeluarkan isyarat asas.

Atas ialah kandungan terperinci Cara Melicinkan Keluk Data Bising: Panduan dan Penyelesaian Komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn