向量与矩阵、矩阵与矩阵的余弦相似度计算(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]])

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值