Введение

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

Что такое K-ближайшие соседи (K-NN)?

Алгоритм K-NN работает, находя «k» ближайших точек данных в наборе данных к заданной входной точке и делая вывод на основе класса большинства или среднего значения среди этих «k» ближайших соседей.

Ключевые термины:

  • Непараметрический: это означает, что модель не делает никаких предположений о базовом распределении данных.
  • Ленивое обучение. В отличие от нетерпеливых учащихся, которые обобщают данные во время обучения, ленивые учащиеся ждут, пока в систему не будет сделан запрос, чтобы выполнить обобщение.
  • k: количество ближайших соседей, учитываемых при составлении прогнозов.

Шаги алгоритма:

  1. Рассчитайте расстояние между входной точкой и любой другой точкой в ​​наборе данных.
  2. Отсортируйте расстояния в порядке возрастания.
  3. Выберите верхние «k» ближайших точек.
  4. Если это проблема классификации, возьмите большинство голосов. Для регрессии вычислите среднее значение.
  5. Верните предсказание.

Пример кода Python для классификации

Давайте посмотрим на пример Python, чтобы лучше понять K-NN. В этом примере мы будем использовать знаменитый набор данных Iris для решения задачи классификации.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as np

# Load the Iris dataset
iris = load_iris()
X, y = iris.data, iris.target

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Initialize the K-NN classifier
k = 3
knn = KNeighborsClassifier(n_neighbors=k)

# Train the classifier
knn.fit(X_train, y_train)

# Make predictions
y_pred = knn.predict(X_test)

# Evaluate the model
accuracy = np.mean(y_pred == y_test)
print(f'Accuracy: {accuracy * 100}%')

Заключение

Алгоритм K-Nearest Neighbours — это универсальный инструмент в наборе инструментов специалиста по данным. Его применимость охватывает множество областей, от здравоохранения до финансов. Несмотря на свою простоту, он может дать впечатляющие результаты при наличии достаточно большого и хорошо распределенного набора данных. Как мы видели, реализация K-NN в Python довольно проста, однако понимание ее тонкостей имеет решающее значение для эффективного применения.

Продолжение информации об инженере по контролю качества в следующей статье.