Middle
15
Можете объяснить механизм работы алгоритма k-ближайших соседей?
Companies where asked
Answer from AI
sobes.tech AI
Алгоритм k-ближайших соседей (k-NN) — это простой и интуитивно понятный метод классификации и регрессии, основанный на поиске ближайших точек в обучающем наборе данных.
Принцип работы:
- Для нового объекта вычисляются расстояния до всех объектов обучающего набора (например, Евклидово расстояние).
- Выбираются k объектов с наименьшим расстоянием — это и есть k ближайших соседей.
- Для задачи классификации определяется класс, наиболее часто встречающийся среди соседей (голосование).
- Для регрессии вычисляется среднее значение целевой переменной соседей.
Пример:
from collections import Counter
import numpy as np
def euclidean_distance(a, b):
return np.sqrt(np.sum((a - b) ** 2))
# Обучающие данные (X) и метки (y)
X_train = np.array([[1, 2], [2, 3], [3, 4], [6, 7]])
y_train = ['A', 'A', 'B', 'B']
# Новый объект
x_new = np.array([2.5, 3])
k = 3
# Вычисляем расстояния
distances = [(euclidean_distance(x_new, x_train), label) for x_train, label in zip(X_train, y_train)]
# Сортируем по расстоянию
distances.sort(key=lambda x: x[0])
# Берём k ближайших
neighbors = distances[:k]
# Определяем класс по большинству
labels = [label for _, label in neighbors]
most_common = Counter(labels).most_common(1)[0][0]
print(f'Класс для нового объекта: {most_common}')
Таким образом, k-NN классифицирует объект на основе сходства с ближайшими примерами.