cosine top-k rank 计算方法

import numpy as np

from sklearn.metrics.pairwise import cosine_similarity

feature_numpy=[[1,2,3],[3,4,5],[8,6,7],[219,392,1],[23,1,2]]

query_vector=[[3,42,33]]

result=cosine_similarity(feature_numpy,query_vector)

result=result.flatten()

>>> result

array([ 0.92921051,  0.90407881,  0.77639014,  0.71409719,  0.14317521])

ind = np.argpartition(result,-2)[-2:]   # 返回 top2 numpy 1.8版本才有

>>> ind

array([1, 0])

>>> result[ind]

array([ 0.90407881,  0.92921051])

ind= ind[np.argsort(-result[ind])]  # 降序排列


至此就是通过query查询特征矩阵相似度的完整计算方法,但是我并未对性能做评估,需要考虑当特征矩阵过大时的计算速度,如果超过千万甚至更多的矩阵需要考虑分布式计算方式来满足大量特征topk的计算

你可能感兴趣的:(cosine top-k rank 计算方法)