윈도 크기 튜닝하기
부정맥(arrhythmia) 데이터셋에서 최적의 윈도 크기가 50인지 직접 확인해 보려고 해요. 데이터셋은 pandas 데이터 프레임 arrh로 제공되며, 시각 t_now까지의 부분 데이터만 사용할 거예요. 테스트 데이터는 X_test, y_test로 제공돼요. 10에서 100까지 여러 윈도 크기를 시도하고, 각 윈도에 대해 나이브 베이즈 분류기를 학습한 뒤 테스트 데이터에서의 F1 점수를 평가하고, 가장 성능이 좋은 윈도 크기를 선택하세요. 또한 numpy는 np로 사용할 수 있고, 함수 f1_score()는 이미 임포트되어 있어요. 마지막으로 각 윈도의 정확도를 저장할 빈 리스트 accuracies가 미리 초기화되어 있어요.
이 연습은 강의의 일부입니다
Python으로 설계하는 Machine Learning 워크플로
연습 안내
.loc()메서드를 사용해t_now에서 멈추는 크기w_size의 슬라이딩 윈도 인덱스를 정의하세요.- 슬라이딩 윈도에서
class열을 제거해X를 만들고, 제거한 그 열을y로 저장하세요. - 나이브 베이즈 분류기를
X와y에 학습시키고, 이를 사용해 테스트 데이터X_test의 레이블을 예측하세요. - 각 윈도 크기에 대한 예측의 F1 점수를 계산하고, 가장 성능이 좋은 윈도 크기를 찾으세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Loop over window sizes
for w_size in wrange:
# Define sliding window
sliding = arrh.____[____:t_now]
# Extract X and y from the sliding window
X, y = sliding.____('class', ____), sliding[____]
# Fit the classifier and store the F1 score
preds = GaussianNB().fit(____, ____).____(X_test)
accuracies.append(____(____, ____))
# Estimate the best performing window size
optimal_window = ____[np.____(accuracies)]