Optimizar n_neighbors
Ahora que ya hemos escalado los datos, podemos probar un modelo KNN. Para maximizar el rendimiento, debemos ajustar los hiperparámetros del modelo. En el algoritmo de k-vecinos más cercanos solo hay un hiperparámetro: n, el número de vecinos. Definimos este hiperparámetro cuando creamos el modelo con KNeighborsRegressor. El argumento para el número de vecinos es n_neighbors.
Queremos probar un rango de valores que pase por la configuración con mejor rendimiento. Normalmente empezamos con 2 vecinos y vamos aumentando hasta que nuestra métrica de evaluación empiece a bajar. Aquí optimizaremos n usando el valor R\(^2\) del método .score() sobre el conjunto de prueba (scaled_test_features y test_targets). Usaremos las puntuaciones del conjunto de prueba para determinar el mejor n.
Este ejercicio forma parte del curso
Machine Learning para finanzas con Python
Instrucciones del ejercicio
- Recorre valores de 2 a 12 para
ny úsalo comon_neighborsen el modeloknn. - Ajusta el modelo con los datos de entrenamiento (
scaled_train_featuresytrain_targets). - Imprime los valores R\(^2\) usando el método
.score()del modeloknnpara los conjuntos de entrenamiento y prueba, y toma nota de la mejor puntuación en el conjunto de prueba.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
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