2016-05-31 1 views
0

Как рассчитать (например, косинус) сходство между одним разреженным вектором и матрицей (т. Е. Массивом разреженных векторов)?
Можно ли использовать scikit-learn, scipy, numpy и т. Д.? Если возможно, метрика подобия должна быть легко заменяемой.Есть ли способ рассчитать сходство между одним разреженным вектором и матрицей?

ответ

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