Python 使用Numpy&;学习不同

Python 使用Numpy&;学习不同,python,numpy,scikit-learn,numpy-ndarray,cosine-similarity,Python,Numpy,Scikit Learn,Numpy Ndarray,Cosine Similarity,我有以下代码。我试图找出为什么使用numpy点积和sklearn余弦相似性时余弦相似性不同。我认为这与阵列超过1-D有关,但不确定为什么会出现这种情况。任何解释都会有帮助 import numpy as np from sklearn.metrics.pairwise import cosine_similarity a=np.array([[1,2,3],[1,2,3]]) b=np.array([[1,2,3],[4,4,6],[4,4,6]]) dot = np.dot(a, b) n

我有以下代码。我试图找出为什么使用numpy点积和sklearn余弦相似性时余弦相似性不同。我认为这与阵列超过1-D有关,但不确定为什么会出现这种情况。任何解释都会有帮助

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

a=np.array([[1,2,3],[1,2,3]])
b=np.array([[1,2,3],[4,4,6],[4,4,6]])

dot = np.dot(a, b)
norma = np.linalg.norm(a)
normb = np.linalg.norm(b)
cos = dot / (norma * normb)

#[[0.32403703 0.33946737 0.50920105]
# [0.32403703 0.33946737 0.50920105]]

cosine_similarity(a, b)
#[[0.96000145 0.9258201  0.94976937]
# [0.96000145 0.9258201  0.94976937]]

查看
cosine\u similarity
方法的源代码,它使用默认情况下仅对
axis=1
进行归一化,而不是像
numpy.linalg.norm
那样对整个数组进行归一化。我尝试使用np.dot(a,b)/(np.linalg.norm(a,axis=1)*np.linalg.norm(b,axis=1)),但这在-->1 np.dot(a,b)/(np.linalg.norm(a,axis=1)*npValueError:操作数无法与形状(2,)(3,)一起广播是的,我也尝试过,但必须将规范重新格式化为
(2,1)
(3,1)
,但仍然没有得到正确的答案。我只需按照源代码从。您可以单击右上角的
[source]
按钮