Ottimizza n_neighbors
Ora che abbiamo dati scalati, possiamo provare a usare un modello KNN. Per massimizzare le prestazioni, dovremmo ottimizzare gli iperparametri del modello. Per l'algoritmo dei k-nearest neighbors abbiamo un solo iperparametro: n, il numero di vicini. Impostiamo questo iperparametro quando creiamo il modello con KNeighborsRegressor. L'argomento per il numero di vicini è n_neighbors.
Vogliamo provare un intervallo di valori che includa l'impostazione con le prestazioni migliori. Di solito si parte da 2 vicini e si aumenta finché la metrica di valutazione non inizia a peggiorare. Useremo il valore R\(^2\) del metodo .score() sul set di test (scaled_test_features e test_targets) per ottimizzare n qui. Useremo i punteggi sul set di test per determinare il miglior n.
Questo esercizio fa parte del corso
Machine Learning per la finanza in Python
Istruzioni dell'esercizio
- Esegui un ciclo sui valori da 2 a 12 per
ne imposta questo valore comen_neighborsnel modelloknn. - Allena il modello sui dati di training (
scaled_train_featuresetrain_targets). - Stampa i valori R\(^2\) usando il metodo
.score()del modelloknnper i set di train e test, e prendi nota del punteggio migliore sul set di test.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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