Optimiser n_neighbors
Maintenant que nous avons des données mises à l'échelle, nous pouvons essayer d'utiliser un modèle KNN. Pour maximiser les performances, nous devons ajuster les hyperparamètres du modèle. Pour l'algorithme des k plus proches voisins, nous n'avons 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 souhaitons essayer un éventail de valeurs qui passe par le paramètre offrant la meilleure performance. En général, on commence avec 2 voisins et on augmente jusqu'à ce que notre métrique de scoring commence à diminuer. Nous utiliserons la valeur R\(^2\) de la méthode .score() sur l'ensemble de test (scaled_test_features et test_targets) pour optimiser n ici. Nous utiliserons les scores du jeu de test pour déterminer le meilleur n.
Cet exercice fait partie du cours
<cours>Machine Learning pour la finance en Python</cours>Instructions de l’exercice
- Parcourez les valeurs de 2 à 12 pour
net définissez-les commen_neighborsdans le modèleknn. - Ajustez le modèle sur les 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, et notez la meilleure valeur 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