Peak-Erkennungsalgorithmus in Python/SciPy
Das Erkennen von Peaks in Daten ist eine häufige Aufgabe bei der Datenanalyse. Für Python-Benutzer stellt SciPy die Funktion scipy.signal.find_peaks bereit, die speziell auf diesen Zweck zugeschnitten ist.
Auswahl der richtigen Parameter
Um Peaks effektiv zu identifizieren und die verfügbaren zu verstehen Parameter ist entscheidend. Während Parameter wie Breite, Schwellenwert und Abstand einen gewissen Nutzen bieten, ist der Parameter, der echte Peaks wirklich von Rauschen unterscheidet, die Prominenz.
Was ist Prominenz?
Prominenz misst die erforderliche Höhe, um von einem Gipfel in ein höheres Gelände abzusteigen. Mit anderen Worten: Es gibt die „Bedeutung“ des Peaks im Verhältnis zu umgebenden Datenpunkten an.
Verwendung der Prominenz zur Peak-Erkennung
Das Testen von find_peaks mithilfe einer frequenzvariierenden Sinuskurve demonstriert dies Wirksamkeit der Prominenz. Während andere Parameter Schwierigkeiten haben, unterschiedliche Peakbreiten oder Rauschpegel zu berücksichtigen, identifiziert die Prominenz konsistent signifikante Peaks.
Codebeispiel
Der folgende Codeausschnitt veranschaulicht die Verwendung von find_peaks mit verschiedene Parameter:
<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>
Die Ergebnisse zeigen, dass die Prominenz die signifikanten Spitzen auch bei Vorhandensein von Rauschen effektiv identifiziert. Durch die Kombination von Parametern wie Prominenz mit anderen wie Abstand oder Breite können Sie die Peakerkennung in komplexen Daten weiter verfeinern.
Das obige ist der detaillierte Inhalt vonWie hilft Prominenz bei der Spitzenerkennung in Python mit SciPy?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!