Алгоритм K-ближайших соседей (KNN) для обработки недостающих данных

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

Соседи экземпляра находятся с использованием евклидова расстояния. Евклидово расстояние между двумя точками данных рассчитывается по следующей формуле.

x = (x1, x2, …, xn)
y = (y1, y2,…, yn)

n — размер пространства. Например, если n=2, расстояние между x и y или d(x, y) рассчитывается в двухмерном пространстве. . n может быть любым более высоким измерением.

В KNN k — это гиперпараметр, который нам необходимо определить во время выполнения алгоритма. В зависимости от значения k один и тот же экземпляр может быть отнесен к разным классам! Итак, нам нужно правильно определить значение для k.

Интуиция KNNImputer

KNNImputer использует алгоритм KNN для вменения недостающих значений в наборе данных. Значения замены рассчитываются с использованием равномерного среднего или взвешенного среднего значений ближайших соседей, указанного в гиперпараметре n_neighbors. Например, когда k=3, алгоритм рассматривает 3 соседей для каждой точки данных для расчета расстояний (d1, d2 и d3).

Важные гиперпараметры в KNNImputer

В Python вменение на основе KNN можно выполнить с помощью класса KNNImputer() Scikit-learn. Вот наиболее важные гиперпараметры этого класса.

from sklearn.impute import KNNImputer
import numpy as np

imputer = KNNImputer(missing_values=np.nan, 
                     n_neighbors=5,
                     weights='uniform')
  • missing_values: заполнитель для отсутствующих данных. Значение по умолчанию — np.nan. Все значения np.nan будут вменены.
  • n_neighbours: количество ближайших соседей. Это принимает целое число. По умолчанию — 5.