Как рассчитать (например, косинус) сходство между одним разреженным вектором и матрицей (т. Е. Массивом разреженных векторов)?
Можно ли использовать scikit-learn, scipy, numpy и т. Д.? Если возможно, метрика подобия должна быть легко заменяемой.Есть ли способ рассчитать сходство между одним разреженным вектором и матрицей?
0
A
ответ
0
Если вы заинтересованы в вычислении подобия косинуса, это можно сделать, используя метрическую функциональность cosine-similarity
, присутствующую в sklearn, которая возвращает матрицу расстояний, если входной сигнал находится в матричной форме.
Иллюстрация:
import numpy as np
from sklearn.metrics.pairwise import pairwise_distances
mat_1 = np.matrix([[1,2,3],[3,4,5]])
vec_1 = (2, 3, 5)
# Make sure the dimensions of the vector and matrix are equal
>>>print pairwise_distances(mat_1, vec_1, metric = 'cosine')
[[ 0.00282354]
[ 0.01351234]]
Примечание: Если вы собираетесь на изменение метрики расстояния, вы можете сделать это путем размещения соответствующих имен в метрический параметр. Однако, если ваш вход содержит разреженную матрицу, вы можете использовать только показатели - ['cityblock', 'cosine', 'euclidean', 'l1', 'l2', 'manhattan']
, так как другие не поддерживаются для обработки разреженных метрических входов.
Docs вы можете обратиться дальше: Pairwise metrics, Affinities and Kernels