EmpezarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Recorre valores de 2 a 12 para n y úsalo como n_neighbors en el modelo knn.
  • Ajusta el modelo con los datos de entrenamiento (scaled_train_features y train_targets).
  • Imprime los valores R\(^2\) usando el método .score() del modelo knn para 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
Editar y ejecutar código