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
Instruções do exercicio
- Faça um loop pelos valores de 2 a 12 para
ne defina isso comon_neighborsno modeloknn. - Ajuste o modelo aos dados de treino (
scaled_train_featuresetrain_targets). - Imprima os valores de R\(^2\) usando o método
.score()do modeloknnpara 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