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>Übungsanweisungen
- Iteriere für
nüber die Werte 2 bis 12 und setze dies alsn_neighborsimknn-Modell. - Passe das Modell an die Trainingsdaten an (
scaled_train_featuresundtrain_targets). - Gib die R\(^2\)-Werte mit der
.score()-Methode desknn-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