Optimaliseer n_neighbors
Nu we geschaalde data hebben, kunnen we een KNN-model proberen. Om de prestaties te maximaliseren, moeten we de hyperparameters van ons model afstemmen. Voor het k-nearest neighbors-algoritme hebben we maar één hyperparameter: n, het aantal buren. We stellen deze hyperparameter in wanneer we het model maken met KNeighborsRegressor. Het argument voor het aantal buren is n_neighbors.
We willen een bereik aan waarden proberen dat de instelling met de beste prestatie doorkruist. Meestal beginnen we met 2 buren en verhogen we dit totdat onze beoordelingsmetric begint te dalen. We gebruiken de R\(^2\)-waarde van de .score()-methode op de testset (scaled_test_features en test_targets) om n hier te optimaliseren. We gebruiken de scores op de testset om de beste n te bepalen.
Deze oefening maakt deel uit van de cursus
Machine Learning voor finance in Python
Oefeninstructies
- Loop voor
ndoor de waarden 2 tot en met 12 en stel dit in alsn_neighborsin hetknn-model. - Fit het model op de trainingsdata (
scaled_train_featuresentrain_targets). - Print de R\(^2\)-waarden met de
.score()-methode van hetknn-model voor de train- en testsets, en noteer de beste score op de testset.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
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