Comece agoraComece grátis

Otimizar n_neighbors

Agora que temos os dados escalonados, podemos tentar usar um modelo KNN. Para maximizar o desempenho, devemos ajustar os hiperparâmetros do modelo. No algoritmo de k-vizinhos mais próximos, temos apenas um hiperparâmetro: n, o número de vizinhos. Definimos esse hiperparâmetro quando criamos o modelo com KNeighborsRegressor. O argumento para o número de vizinhos é n_neighbors.

Queremos testar uma faixa de valores que inclua a configuração com melhor desempenho. Normalmente começamos com 2 vizinhos e aumentamos até que nossa métrica de avaliação comece a cair. Aqui, vamos usar o valor R\(^2\) do método .score() no conjunto de teste (scaled_test_features e test_targets) para otimizar n. Usaremos as pontuações do conjunto de teste para determinar o melhor n.

Este exercicio faz parte do curso

Machine Learning para Finanças em Python

Ver curso

Instruções do exercicio

  • Faça um loop pelos valores de 2 a 12 para n e defina isso como n_neighbors no modelo knn.
  • Ajuste o modelo aos dados de treino (scaled_train_features e train_targets).
  • Imprima os valores de R\(^2\) usando o método .score() do modelo knn para os conjuntos de treino e teste, e anote a melhor pontuação no conjunto de teste.

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

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 e Executar Código