Как переписать заданную функцию ближайшего соседа только с использованием numpy и без циклов? - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть домашнее задание по алгоритму ближайшего соседа с использованием Python.У меня есть данный код в чистом Python, который содержит цикл.Я должен переписать и настроить функцию только с использованием NumPy и без петель.

У меня есть немаркированная точка u, которую необходимо классифицировать, функция расстояния и тренировочный набор (X, Y).Функция, которую я должен написать, должна вернуть метку точки, которая имеет наименьшее расстояние до вас.

Вот функция, написанная на чистом питоне, которую я должен переписать:

def pynearest(u, X, Y, distance=pydistance):
    xbest = None
    ybest = None
    dbest = float('inf')

    for x, y in zip(X, Y):
        d = distance(u, x)
        if d < dbest:
            ybest = y
            xbest = x
            dbest = d

    return ybest

1 Ответ

0 голосов
/ 28 апреля 2019

Процесс переписывания циклов в Python называется векторизацией.Чтобы решить эту проблему, вы обычно должны использовать индексы для получения значений в вашей матрице.Я бы посоветовал вам взглянуть на следующие вопросы: Векторизация для циклов NumPy Векторизация для цикла for в numpy / scipy? Векторизация для цикла в python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...