Введение
Алгоритм ближайших соседей для регрессии - это алгоритм машинного обучения, который предсказывает значение нового данных, находя k ближайших данных в наборе обучающих данных и используя их среднее значение для предсказания нового значения. В этом практическом занятии мы используем scikit-learn для демонстрации решения задачи регрессии с использованием k-ближайших соседей и интерполяции целевого признака с использованием как барицентра, так и постоянных весов.
Советы по работе с ВМ
После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике в Jupyter Notebook.
Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами при обучении, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Генерация выборочных данных
Сначала мы генерируем выборочные данные для нашей задачи регрессии. Мы создаем массив из 40 данных с 1 признаком, а затем создаем целевой массив, применяя функцию синуса к данным. Также мы добавляем некоторый шум к каждому 5-му элементу данных.
import numpy as np
import matplotlib.pyplot as plt
from sklearn import neighbors
np.random.seed(0)
X = np.sort(5 * np.random.rand(40, 1), axis=0)
T = np.linspace(0, 5, 500)[:, np.newaxis]
y = np.sin(X).ravel()
## Add noise to targets
y[::5] += 1 * (0.5 - np.random.rand(8))
Настройка модели регрессии
Затем настраиваем нашу модель регрессии на выборочные данные, используя 5 соседей и веса, равномерные и зависящие от расстояния. Мы используем цикл for для перебора каждого типа весов и создаем точечную диаграмму данных и линейную диаграмму предсказанных значений с использованием метода predict настроенной модели.
n_neighbors = 5
for i, weights in enumerate(["uniform", "distance"]):
knn = neighbors.KNeighborsRegressor(n_neighbors, weights=weights)
y_ = knn.fit(X, y).predict(T)
plt.subplot(2, 1, i + 1)
plt.scatter(X, y, color="darkorange", label="data")
plt.plot(T, y_, color="navy", label="prediction")
plt.axis("tight")
plt.legend()
plt.title("KNeighborsRegressor (k = %i, weights = '%s')" % (n_neighbors, weights))
plt.tight_layout()
plt.show()
Резюме
В этом практическом занятии мы показали, как использовать алгоритм ближайших соседей для регрессии для предсказания значений новых данных на основе k ближайших соседей в наборе обучающих данных. Мы использовали scikit-learn для генерации выборочных данных и настройки нашей модели регрессии с использованием как равномерных, так и расстояностных весов. Затем мы построили точечную диаграмму данных и предсказанных значений, чтобы визуализировать точность нашей модели.