ホームページ  >  記事  >  バックエンド開発  >  Prominence は SciPy を使用した Python でのピーク検出にどのように役立ちますか?

Prominence は SciPy を使用した Python でのピーク検出にどのように役立ちますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-22 22:44:29288ブラウズ

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

Python/SciPy のピーク検出アルゴリズム

データ内のピークの検出は、データ分析における一般的なタスクです。 Python ユーザー向けに、SciPy は、この目的のために特別に調整された scipy.signal.find_peaks 関数を提供します。

適切なパラメータの選択

ピークを効果的に識別するには、使用可能なパラメータを理解するパラメータは非常に重要です。幅、しきい値、距離などのパラメーターはある程度の有用性を提供しますが、真のピークとノイズを真に区別するパラメーターは プロミネンス です。

プロミネンスとは何ですか?

プロミネンスは、山頂からより高い地形に下りるのに必要な高さを測定します。言い換えれば、周囲のデータ ポイントに対するピークの「重要性」を示します。

ピーク検出にプロミネンスを使用する

周波数が変化する正弦波を使用して find_peaks をテストすると、プロミネンスの有効性。他のパラメーターはさまざまなピーク幅やノイズ レベルを考慮するのに苦労しますが、プロミネンスは一貫して重要なピークを識別します。

コード例

次のコード スニペットは、find_peaks と次のコードの使用を示しています。さまざまなパラメーター:

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

結果は、ノイズが存在する場合でも、プロミネンスが重要なピークを効果的に識別することを示しています。プロミネンスなどのパラメータを距離や幅などの他のパラメータと組み合わせることで、複雑なデータのピーク検出をさらに改良できます。

以上がProminence は SciPy を使用した Python でのピーク検出にどのように役立ちますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。