Heim  >  Artikel  >  Backend-Entwicklung  >  Wie hilft Prominenz bei der Spitzenerkennung in Python mit SciPy?

Wie hilft Prominenz bei der Spitzenerkennung in Python mit SciPy?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-22 22:44:29288Durchsuche

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

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn