【发布时间】:2016-09-29 19:23:12
【问题描述】:
如何计算一个稀疏向量和一个矩阵(即稀疏向量数组)之间的(例如余弦)相似度?
这可以使用 scikit-learn、scipy、numpy 等吗?如果可能,相似度指标应该很容易改变。
【问题讨论】:
标签: python numpy scipy scikit-learn sparse-matrix
如何计算一个稀疏向量和一个矩阵(即稀疏向量数组)之间的(例如余弦)相似度?
这可以使用 scikit-learn、scipy、numpy 等吗?如果可能,相似度指标应该很容易改变。
【问题讨论】:
标签: python numpy scipy scikit-learn sparse-matrix
如果您对计算余弦相似度感兴趣,可以使用 sklearn 中的cosine-similarity 度量功能来完成,如果输入是矩阵形式,它会返回距离矩阵。
插图:
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'],因为不支持其他指标来处理稀疏指标输入。
您可以进一步参考的文档:Pairwise metrics, Affinities and Kernels
【讨论】: