Optimizează n_neighbors
Acum că avem date scalate, putem încerca să folosim un model KNN. Pentru a maximiza performanța, ar trebui să ajustăm hiperparametrii modelului. În cazul algoritmului k-nearest neighbors, avem un singur hiperparametru: n, adică numărul de vecini. Acest hiperparametru se setează atunci când creăm modelul cu KNeighborsRegressor. Argumentul pentru numărul de vecini este n_neighbors.
Vrem să testăm un interval de valori care să includă setarea cu cea mai bună performanță. De obicei, vom începe cu 2 vecini și vom crește până când metrica de evaluare începe să scadă. Vom folosi valoarea R\(^2\) obținută prin metoda .score() pe setul de testare (scaled_test_features și test_targets) pentru a optimiza n. Scorurile pe setul de testare ne vor ajuta să determinăm cel mai bun n.
Acest exercițiu face parte din cursul
Machine Learning pentru finanțe în Python
Instrucțiuni pentru exercițiu
- Parcurge valorile de la 2 la 12 pentru
nși setează-le can_neighborsîn modelulknn. - Antrenează modelul pe datele de antrenament (
scaled_train_featuresșitrain_targets). - Afișează valorile R\(^2\) folosind metoda
.score()a modeluluiknnpentru seturile de antrenament și de testare, apoi notează cel mai bun scor obținut pe setul de testare.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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