НачатьНачать бесплатно

Оптимизация 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
Редактировать и запускать код