向量与矩阵、矩阵与矩阵的余弦相似度计算(sklearn实现)

关于的余弦相似度公式,这里就不再描述,直接看如何使用sklearn自带的工具计算余弦相似度,具体代码如下:

1 向量和矩阵之间的余弦相似度

计算向量和矩阵之间的余弦相似度时,其计算结果是向量和矩阵中的每一行计算结果的集合,注意最终结果为了方便查看,是越大越相似。

1.1 使用dataframe代表的矩阵和向量

#%%
#矩阵,这里我用dataframe代替矩阵
a = pd.DataFrame(np.array([[1,2],[3,4],[5,6],[7,8]]),columns=['x','y'],dtype=float)
#向量
b = pd.DataFrame(np.array([[1,2]]),columns=['x','y'],dtype=float)
from sklearn.metrics.pairwise import cosine_similarity
r = cosine_similarity(a,b)

1.2 使用np.array表示的矩阵和向量:

#%%

a = pd.DataFrame(np.array([[1,2],[3,4],[5,6],[7,8]]),columns=['x','y'],dtype=float)

b = pd.DataFrame(np.array([[1,2]]),columns=['x','y'],dtype=float)
#不重置索引,上下拼接
df = pd.concat([a,b],axis=0,join='inner',ignore_index=True)
#m,n = a.shape
#m0,n0 = b.shape

from sklearn.metrics.pairwise import cosine_similarity
r = cosine_similarity(np.array(a),np.array(b))

1.3 结果:

array([[1.        ],
       [0.98386991],
       [0.97341717],
       [0.96761727]])

2 矩阵与矩阵之间余弦相似度

2.1 使用dataframe代表的矩阵

a = pd.DataFrame(np.array([[1,2],[3,4],[5,6],[7,8]]),columns=['x','y'],dtype=float)

b = pd.DataFrame(np.array([[1,2],[3,4]]),columns=['x','y'],dtype=float)
#不重置索引,上下拼接
df = pd.concat([a,b],axis=0,join='inner',ignore_index=True)
#m,n = a.shape
#m0,n0 = b.shape

from sklearn.metrics.pairwise import cosine_similarity
r = cosine_similarity(a,b)

2.2 使用numpy代表的矩阵

a = pd.DataFrame(np.array([[1,2],[3,4],[5,6],[7,8]]),columns=['x','y'],dtype=float)

b = pd.DataFrame(np.array([[1,2],[3,4]]),columns=['x','y'],dtype=float)
#不重置索引,上下拼接
df = pd.concat([a,b],axis=0,join='inner',ignore_index=True)
#m,n = a.shape
#m0,n0 = b.shape

from sklearn.metrics.pairwise import cosine_similarity
r = cosine_similarity(np.array(a),np.array(b))

2.1 结果:

array([[1.        , 0.98386991],
       [0.98386991, 1.        ],
       [0.97341717, 0.99868766],
       [0.96761727, 0.99716412]])

你可能感兴趣的:(python,pandas,sympy矩阵计算,sklearn,矩阵)