CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Parcourez les valeurs de 2 à 12 pour n et affectez-les à n_neighbors dans le modèle knn.
  • Ajustez le modèle aux données d'entraînement (scaled_train_features et train_targets).
  • Affichez les valeurs R\(^2\) à l'aide de la méthode .score() du modèle knn pour 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
Modifier et exécuter le code