Rumah > Artikel > pembangunan bahagian belakang > Cara Melicinkan Keluk Data Bising: Panduan dan Penyelesaian Komprehensif
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!