LoslegenKostenlos starten

n_neighbors optimieren

Jetzt, da wir die Daten skaliert haben, können wir ein KNN-Modell verwenden. Um die Leistung zu maximieren, sollten wir die Hyperparameter unseres Modells abstimmen. Beim k-nearest-neighbors-Algorithmus gibt es nur einen Hyperparameter: n, die Anzahl der Nachbarn. Wir setzen diesen Hyperparameter, wenn wir das Modell mit KNeighborsRegressor erstellen. Das Argument für die Anzahl der Nachbarn heißt n_neighbors.

Wir wollen einen Wertebereich ausprobieren, der die Einstellung mit der besten Performance umfasst. Üblicherweise starten wir mit 2 Nachbarn und erhöhen, bis unsere Bewertungskennzahl beginnt zu sinken. Wir verwenden hier den R\(^2\)-Wert der .score()-Methode auf dem Test-Set (scaled_test_features und test_targets), um n zu optimieren. Anhand der Test-Set-Scores bestimmen wir das beste n.

Diese Übung ist Teil des Kurses

<Kurs>Maschinelles Lernen für Finanzen in Python</Kurs>
Kurs ansehen

Übungsanweisungen

  • Iteriere für n über die Werte 2 bis 12 und setze dies als n_neighbors im knn-Modell.
  • Passe das Modell an die Trainingsdaten an (scaled_train_features und train_targets).
  • Gib die R\(^2\)-Werte mit der .score()-Methode des knn-Modells für Trainings- und Test-Set aus und merke dir den besten Score auf dem Test-Set.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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
Code bearbeiten und ausführen