【发布时间】:2015-10-16 01:05:50
【问题描述】:
分别取大小为 mxn 和 pxn 的两个矩阵 arr1、arr2。我试图找到他们尊重的行的余弦距离作为 mxp 矩阵。本质上,我想取行的成对点积,然后除以每行范数的外积。
import numpy as np
def cosine_distance(arr1, arr2):
numerator = np.dot(arr1, arr2.T)
denominator = np.outer(
np.sqrt(np.square(arr1).sum(1)),
np.sqrt(np.square(arr2).sum(1)))
return np.nan_to_num(np.divide(numerator, denominator))
我认为这应该返回一个 mxn 矩阵,其中包含 [-1.0, 1.0] 中的条目,但由于某种原因,我得到了超出该区间的值。我在想我的这些 numpy 函数之一正在做一些我认为它所做的事情。
【问题讨论】:
-
如果 p 与 n 不同,则 arr1 和 arr2 的行长度不同。在这种情况下,你如何计算它们的内积?
-
@M.Massias 抱歉,意思是 m by n 和 p by n。它们应该具有相同的列数。
标签: python numpy cosine-similarity