Функция сходства косинусов с использованием Numpy - PullRequest
0 голосов
/ 09 ноября 2019

Меня проинформировали о нижеследующем.

Мне нужно написать функцию, которая принимает вектор x и список векторов и находит в списке индекс вектора, который наиболее похожх, используя косинусное сходство.

Я пытался использовать ниже, но пока безуспешно. Я очень новичок в этом, поэтому помощь и объяснения будут оценены !!

import numpy as np
def most_similar(x, v_list):
    dot_product = np.dot(x, v_list)
    norm_a = np.linalg.norm(x)
    norm_b = np.linalg.norm(v_list)
    return dot_product / (norm_a * norm_b)

1 Ответ

0 голосов
/ 09 ноября 2019

Возможно, было бы более эффективно использовать sklearn.metrics.pairwise.cosine_similarity с np.argmax (но я не делал никаких тестов), я придумал небольшое изменение в вашем коде:

def most_similar(x, M):
    dot_product = np.dot(x, M.T)
    norm_a = np.linalg.norm(x)
    norm_b = np.linalg.norm(M,axis=1)
    score = dot_product / (norm_a * norm_b)
    return np.argmax(score)

Вы бывозможно, нужно перебрать список, но здесь аргумент M - это массив пустых значений (каждая строка - это ваш вектор, элементы v_list), который вы можете легко получить с помощью np.array(v_list).

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