Optimiser n_neighbors
Maintenant que nos données sont mises à l'échelle, nous pouvons essayer un modèle KNN. Pour maximiser la performance, nous devrions régler les hyperparamètres du modèle. Pour l'algorithme des plus proches voisins, il n'y a qu'un seul hyperparamètre : n, le nombre de voisins. Nous définissons cet hyperparamètre lorsque nous créons le modèle avec KNeighborsRegressor. L'argument pour le nombre de voisins est n_neighbors.
Nous voulons essayer un éventail de valeurs qui passe par le réglage offrant la meilleure performance. En général, on commence avec 2 voisins et on augmente jusqu'à ce que notre mesure de pointage commence à diminuer. Ici, nous utiliserons la valeur R\(^2\) retournée par la méthode .score() sur l'ensemble de test (scaled_test_features et test_targets) pour optimiser n. Nous utiliserons les scores de l'ensemble de test pour déterminer le meilleur n.
Cette activité fait partie du cours
Machine Learning pour la finance en Python
Instructions de l’exercice
- Parcourez les valeurs de 2 à 12 pour
net affectez-les àn_neighborsdans le modèleknn. - Ajustez le modèle aux données d'entraînement (
scaled_train_featuresettrain_targets). - Affichez les valeurs R\(^2\) à l'aide de la méthode
.score()du modèleknnpour les ensembles d'entraînement et de test, puis notez le meilleur score sur l'ensemble de test.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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