Algoritma Pengesanan Puncak dalam Python/SciPy
Mengesan puncak dalam data ialah tugas biasa dalam analisis data. Untuk pengguna Python, SciPy menyediakan fungsi scipy.signal.find_peaks, disesuaikan khusus untuk tujuan ini.
Memilih Parameter yang Tepat
Untuk mengenal pasti puncak dengan berkesan, memahami yang tersedia parameter adalah penting. Walaupun parameter seperti lebar, ambang dan jarak menawarkan beberapa utiliti, parameter yang benar-benar membezakan puncak sebenar daripada hingar ialah penonjolan.
Apakah itu Penonjolan?
Penonjolan mengukur ketinggian yang diperlukan untuk turun dari puncak ke mana-mana rupa bumi yang lebih tinggi. Dalam erti kata lain, ia menunjukkan "kepentingan" puncak berbanding titik data sekeliling.
Menggunakan Penonjolan untuk Pengesanan Puncak
Menguji find_peaks menggunakan sinusoid yang berbeza-beza frekuensi menunjukkan keberkesanan penonjolan. Walaupun parameter lain bergelut untuk mengambil kira lebar puncak atau aras hingar yang berbeza-beza, penonjolan secara konsisten mengenal pasti puncak yang ketara.
Contoh Kod
Coretan kod berikut menggambarkan penggunaan find_peaks dengan parameter yang berbeza:
<code class="python">import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks x = np.sin(2*np.pi*(2**np.linspace(2,10,1000))*np.arange(1000)/48000) + np.random.normal(0, 1, 1000) * 0.15 peaks, _ = find_peaks(x, distance=20) peaks2, _ = find_peaks(x, prominence=1) # BEST! peaks3, _ = find_peaks(x, width=20) peaks4, _ = find_peaks(x, threshold=0.4) plt.subplot(2, 2, 1) plt.plot(peaks, x[peaks], "xr"); plt.plot(x); plt.legend(['distance']) plt.subplot(2, 2, 2) plt.plot(peaks2, x[peaks2], "ob"); plt.plot(x); plt.legend(['prominence']) plt.subplot(2, 2, 3) plt.plot(peaks3, x[peaks3], "vg"); plt.plot(x); plt.legend(['width']) plt.subplot(2, 2, 4) plt.plot(peaks4, x[peaks4], "xk"); plt.plot(x); plt.legend(['threshold']) plt.show()</code>
Keputusan menunjukkan bahawa penonjolan berkesan mengenal pasti puncak yang ketara, walaupun dalam keadaan bunyi bising. Dengan menggabungkan parameter seperti penonjolan dengan yang lain seperti jarak atau lebar, anda boleh memperhalusi pengesanan puncak dalam data kompleks lagi.
Atas ialah kandungan terperinci Bagaimanakah Prominence Membantu dalam Pengesanan Puncak dalam Python Menggunakan SciPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!