машинное обучение
August 2, 2021

Непорочная близость для AI моделей

Одной из наиболее распространенных задач в области искусственного интеллекта является поиск объектов ближайших к заданному. В этой статье я расскажу, как это реализовать средствами языка Python и библиотеки scikit-learn.

Рассмотрим класс NearestNeighbors, который имеет весь необходимый нам функционал. Для его использования потребуется создать экземпляр, которому можно передать такие параметры, как метрику расстояния (по умолчанию евклидова), количество требуемых соседей (5), затем вызвать метод fit с набором объектов для обучения.

Вывод индексов k ближайших соседей и расстояний до них осуществляется методом kneighbors:

Можно также вывести ближайших соседей, находящихся не далее заданного расстояния с помощью метода radius_neighbors (количество может быть переменным для разных объектов):

Можно было не переобучать экземпляр нашего класса NearestNeighbors и задать радиус в самом методе radius_neighbors:

Аналогично и с параметром n_neighbors можно экспериментировать в методе kneighbors:

Следует отметить, что нахождение ближайших "соседей" позволяет аппроксимировать их свойства для вычисления неизвестных параметров у заданного объекта. Например, можно предсказать стоимость квартиры с заданной площадью, типом дома и районом, используя информацию о стоимости аналогичной по параметрам недвижимости.