我正在使用下面的代码来计算 2 个向量之间的余弦相似度。它返回一个矩阵而不是单个值0.8660254
。
[[ 1. 0.8660254]
[0.8660254 1.]]
from sklearn.metrics.pairwise import cosine_similarity
vec1 = [1,1,0,1,1]
vec2 = [0,1,0,1,1]
print(cosine_similarity([vec1, vec2]))
我正在使用下面的代码来计算 2 个向量之间的余弦相似度。它返回一个矩阵而不是单个值0.8660254
。
[[ 1. 0.8660254]
[0.8660254 1.]]
from sklearn.metrics.pairwise import cosine_similarity
vec1 = [1,1,0,1,1]
vec2 = [0,1,0,1,1]
print(cosine_similarity([vec1, vec2]))
根据文档 cosine_similarity(X, Y=None, dense_output=True)
返回一个形状为 (n_samples_X, n_samples_Y) 的数组。您的错误是您将 [vec1, vec2] 作为方法的第一个输入传递。您的向量也应该是numpy
数组:
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
vec1 = np.array([[1,1,0,1,1]])
vec2 = np.array([[0,1,0,1,1]])
#print(cosine_similarity([vec1, vec2]))
print(cosine_similarity(vec1, vec2))
X : ndarray 或稀疏数组,shape: (n_samples_X, n_features) 输入数据。
所以你必须指定尺寸。
np.array([1, 2]).shape
有有趣的形状:
(2, )
vec1 = [1, 1, 0, 1, 1]
vec2 = [0, 1, 0, 1, 1]
print(cosine_similarity([vec1], [vec2]))
我将第二个 vec2 作为 Y 传递,并将输出作为标量。