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 중국어 웹사이트의 기타 관련 기사를 참조하세요!