Задание 1. Поиск ближайшего соседа
Даны координаты нового объекта и трёх обучающих наблюдений:
import numpy as np
X = np.array([3, 4])
points = np.array([
[3, 5],
[6, 8],
[4, 4]
])
classes = np.array([0, 1, 0])
Необходимо:
- С
помощью NumPy вычислить евклидово расстояние от X до каждого объекта.
- Определить
минимальное расстояние.
- Найти
ближайшего соседа.
- Определить
прогнозируемый класс при k = 1.
- Вывести
результаты на экран.
Задание 2. Исследование влияния параметра k
Дан обучающий набор данных:
import numpy as np
X_train = np.array([
[1, 1],
[2, 2],
[3, 3],
[4, 4],
[5, 5]
])
y_train = np.array([1, 0, 0, 0, 1])
new_object = np.array([[1, 1]])
Необходимо:
- Создать
модель KNeighborsClassifier.
- Обучить
модель при k = 1.
- Повторить
обучение при k = 3 и k = 5.
- Вывести
прогнозируемый класс для каждого значения k.
- Объяснить
влияние количества соседей на результат классификации.
- Указать,
почему в реальной задаче k рекомендуется выбирать с помощью перекрёстной
проверки.
Задание 3. kNN-регрессия и Pipeline
Дан набор данных:
import numpy as np
X_train = np.array([
[1],
[2],
[3]
])
y_train = np.array([40, 50, 60])
new_object = np.array([[2.5]])
Необходимо:
- Создать
модель KNeighborsRegressor при k = 3.
- Обучить
модель и получить прогноз для нового объекта.
- Повторить
эксперимент с параметром weights="distance".
- Сравнить
прогнозы с обычным и взвешенным средним.
- Создать
Pipeline из StandardScaler и KNeighborsRegressor.
- Объяснить,
почему масштабирование важно для алгоритма kNN.