Sobes.tech
Middle
15

Можете объяснить механизм работы алгоритма k-ближайших соседей?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

Алгоритм k-ближайших соседей (k-NN) — это простой и интуитивно понятный метод классификации и регрессии, основанный на поиске ближайших точек в обучающем наборе данных.

Принцип работы:

  1. Для нового объекта вычисляются расстояния до всех объектов обучающего набора (например, Евклидово расстояние).
  2. Выбираются k объектов с наименьшим расстоянием — это и есть k ближайших соседей.
  3. Для задачи классификации определяется класс, наиболее часто встречающийся среди соседей (голосование).
  4. Для регрессии вычисляется среднее значение целевой переменной соседей.

Пример:

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 классифицирует объект на основе сходства с ближайшими примерами.