Optymalizacja n_neighbors
Mamy już przeskalowane dane, więc możemy wypróbować model KNN. Aby zmaksymalizować jego wydajność, warto dostroić hiperparametry modelu. W algorytmie k najbliższych sąsiadów mamy tylko jeden hiperparametr: n, czyli liczbę sąsiadów. Ustawiamy go podczas tworzenia modelu za pomocą KNeighborsRegressor. Argument odpowiadający za liczbę sąsiadów to n_neighbors.
Spróbujemy przetestować zakres wartości obejmujący ustawienie dające najlepszą wydajność. Zazwyczaj zaczynamy od 2 sąsiadów i zwiększamy tę liczbę, aż metryka oceny zacznie spadać. Użyjemy wartości R\(^2\) zwracanej przez metodę .score() na zbiorze testowym (scaled_test_features i test_targets), aby zoptymalizować n. Na podstawie wyników na zbiorze testowym wybierzemy najlepsze n.
To ćwiczenie jest częścią kursu
Uczenie maszynowe w finansach z Pythonem
Instrukcje do ćwiczenia
- Przejdź pętlą przez wartości od 2 do 12 dla
ni ustaw je jakon_neighborsw modeluknn. - Dopasuj model do danych treningowych (
scaled_train_featuresitrain_targets). - Wyświetl wartości R\(^2\) za pomocą metody
.score()modeluknndla zbiorów treningowego i testowego, a następnie zanotuj najlepszy wynik na zbiorze testowym.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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