n_neighbors 최적화
이제 데이터를 스케일링했으니 KNN 모델을 사용해 볼 수 있어요. 성능을 최대화하려면 모델의 하이퍼파라미터를 튜닝해야 해요. k-최근접 이웃 알고리즘에는 하이퍼파라미터가 하나뿐인데, 바로 이웃의 수 n이에요. 이 하이퍼파라미터는 KNeighborsRegressor로 모델을 만들 때 설정하며, 이웃 수를 지정하는 인수는 n_neighbors예요.
최적의 성능을 내는 설정을 지나가도록 값의 범위를 시도해 봐야 해요. 보통 이웃 2부터 시작해, 평가지표가 떨어지기 시작할 때까지 늘려 가요. 여기서는 테스트 세트(scaled_test_features, test_targets)에 대해 .score() 메서드가 반환하는 R\(^2\) 값을 사용해 n을 최적화하겠습니다. 테스트 세트 점수를 바탕으로 최적의 n을 결정해요.
이 연습은 강의의 일부입니다
Python으로 배우는 금융 분야 Machine Learning
연습 안내
n을 2부터 12까지 반복하며knn모델의n_neighbors로 설정하세요.- 훈련 데이터(
scaled_train_features,train_targets)에 모델을 학습시키세요. knn모델의.score()메서드로 훈련 세트와 테스트 세트의 R\(^2\) 값을 출력하고, 테스트 세트에서 가장 높은 점수를 기록해 두세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
from sklearn.neighbors import KNeighborsRegressor
for n in range(____):
# Create and fit the KNN model
knn = KNeighborsRegressor(n_neighbors=____)
# Fit the model to the training data
knn.fit(____, ____)
# Print number of neighbors and the score to find the best value of n
print("n_neighbors =", n)
print('train, test scores')
print(knn.score(scaled_train_features, train_targets))
print(knn.score(____, ____))
print() # prints a blank line