Алгоритм 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.