노이즈가 있는 데이터에 대한 곡선 평활화: 종합 가이드
노이즈나 불규칙성을 나타내는 데이터세트를 다룰 때는 효과적인 기술을 찾는 것이 중요합니다. 이러한 편차를 완화하고 기본 추세를 추출합니다. 이 기사에서는 곡선 평활화를 달성하기 위한 다양한 접근 방식을 살펴보고 노이즈 처리의 특정 문제를 해결합니다.
일변량 스플라인 함수
Scipy의 UnivariateSpline 기능은 곡선 평활화. 그러나 데이터를 과대적합하고 추가 노이즈를 발생시키는 경향이 있으므로 항상 노이즈를 효과적으로 처리하지 못할 수도 있습니다.
이동 평균
이동 평균 접근 방식을 사용할 수도 있습니다. , 여기에는 데이터 포인트 하위 집합의 평균을 계산하고 이를 평활화된 값으로 사용하는 작업이 포함됩니다. 그러나 과도한 평활화 또는 과소적합을 방지하려면 이동 평균에 대한 적절한 지연을 선택하는 것이 중요합니다.
Savitzky-Golay 필터: 강력한 솔루션
Savitzky-Golay 필터 시끄러운 곡선을 부드럽게 하기 위한 강력한 솔루션으로 등장합니다. 이는 최소 제곱 접근 방식을 활용하여 작은 데이터 포인트 창에 다항식을 맞춥니다. 창을 이동하고 프로세스를 반복하면 각 점이 이웃을 기준으로 최적으로 조정됩니다.
SciPy로 구현
Python에서 Savitzky-Golay 필터를 구현하려면, 요리책 예제에서 제공하는 savitzky_golay() 함수나 SciPy 라이브러리의 savgol_filter() 함수를 사용할 수 있습니다. 다음 코드는 savgol_filter() 함수를 사용하여 잡음이 있는 정현파 데이터세트를 평활화하는 방법을 보여줍니다.
import numpy as np import matplotlib.pyplot as plt from scipy.signal import savgol_filter # Generate noisy sinusoidal data x = np.linspace(0,2*np.pi,100) y = np.sin(x) + np.random.random(100) * 0.2 # Apply Savitzky-Golay filter yhat = savgol_filter(y, 51, 3) # window size 51, polynomial order 3 # Plot original and smoothed data plt.plot(x,y) plt.plot(x,yhat, color='red') plt.show()
Savitzky-Golay 필터를 적용하면 잡음이 있는 정현파가 전체 추세를 유지하면서 효과적으로 평활화됩니다. 이는 노이즈를 줄이고 기본 신호를 추출하는 필터의 효율성을 보여줍니다.
위 내용은 노이즈가 있는 데이터 곡선을 완화하는 방법: 종합 가이드 및 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!