Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Prominence Membantu dalam Pengesanan Puncak dalam Python Menggunakan SciPy?

Bagaimanakah Prominence Membantu dalam Pengesanan Puncak dalam Python Menggunakan SciPy?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-22 22:44:29288semak imbas

How Does Prominence Help in Peak Detection in Python Using SciPy?

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!

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