Оптимизация n_neighbors
Теперь, когда данные масштабированы, можно попробовать модель KNN. Чтобы добиться максимальной точности, необходимо настроить гиперпараметры модели. У алгоритма k ближайших соседей есть только один гиперпараметр: n — количество соседей. Он задаётся при создании модели с помощью KNeighborsRegressor, а соответствующий аргумент называется n_neighbors.
Наша задача — перебрать диапазон значений, который охватит оптимальную настройку. Как правило, начинают с 2 соседей и увеличивают это число до тех пор, пока метрика качества не начнёт снижаться. Здесь для оптимизации n будем использовать значение R\(^2\), которое возвращает метод .score() на тестовой выборке (scaled_test_features и test_targets). Именно по значениям на тестовой выборке определим наилучшее n.
Это упражнение является частью курса
Машинное обучение для финансов на Python
Инструкции к упражнению
- Переберите значения от 2 до 12 для
nи задайте каждое из них какn_neighborsв моделиknn. - Обучите модель на обучающих данных (
scaled_train_featuresиtrain_targets). - Выведите значения R\(^2\) с помощью метода
.score()моделиknnдля обучающей и тестовой выборок и обратите внимание на наилучший результат на тестовой выборке.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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