Maison  >  Article  >  développement back-end  >  Comment Prominence aide-t-il à la détection des pics en Python à l'aide de SciPy ?

Comment Prominence aide-t-il à la détection des pics en Python à l'aide de SciPy ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-22 22:44:29296parcourir

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

Algorithme de détection des pics en Python/SciPy

La détection des pics dans les données est une tâche courante dans l'analyse des données. Pour les utilisateurs de Python, SciPy fournit la fonction scipy.signal.find_peaks, spécialement conçue à cet effet.

Choisir les bons paramètres

Pour identifier efficacement les pics, comprendre les paramètres disponibles paramètres est crucial. Bien que des paramètres tels que la largeur, le seuil et la distance offrent une certaine utilité, le paramètre qui distingue véritablement les vrais pics du bruit est la proéminence.

Qu'est-ce que la proéminence ?

La proéminence mesure la hauteur requise pour descendre d'un sommet vers un terrain plus élevé. En d'autres termes, cela indique « l'importance » du pic par rapport aux points de données environnants.

Utiliser Prominence pour la détection des pics

Le test de find_peaks à l'aide d'une sinusoïde à fréquence variable démontre l'importance du pic. efficacité de la proéminence. Alors que d'autres paramètres ont du mal à prendre en compte les largeurs de pic ou les niveaux de bruit variables, la proéminence identifie systématiquement les pics significatifs.

Exemple de code

L'extrait de code suivant illustre l'utilisation de find_peaks avec différents paramètres :

<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>

Les résultats montrent que la proéminence identifie efficacement les pics significatifs, même en présence de bruit. En combinant des paramètres tels que la proéminence avec d'autres comme la distance ou la largeur, vous pouvez affiner davantage la détection des pics dans des données complexes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn