200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 使用sklearn自带公式计算余弦相似度

使用sklearn自带公式计算余弦相似度

时间:2020-10-05 10:14:28

相关推荐

使用sklearn自带公式计算余弦相似度

from sklearn.metrics.pairwise import cosine_similarity

a1=np.arange(15).reshape(-1,5)

a2=np.arange(20).reshape(4,5)

print(cosine_similarity(a1,a2))

输出结果:

[[1.0.91465912 0.87845859 0.86154979]

[0.91465912 1.0.99663684 0.99323905]

[0.87845859 0.99663684 1.0.9994114 ]]

猜想,第一行的值是a1中的第一个样本与a2中所有的样本的余弦相似度;以此类推;

证明如下:

自定义一个函数:

def cosine_similarity2(vector,matrix):

size=len(matrix)

data_one_set=np.tile(vector,(size,1))

dot_product=data_one_set*matrix

dot_product_sum=dot_product.sum(axis=1)

data_one_set_sq=data_one_set**2

data_one_set_sq_sum=data_one_set_sq.sum(axis=1)

data_one_set_magnitude=data_one_set_sq_sum**0.5

matrix_sq=matrix**2

matrix_sq_sum=matrix_sq.sum(axis=1)

matrix_sq_sum_magnitude=matrix_sq_sum**0.5

ratio=dot_product_sum/(data_one_set_magnitude*matrix_sq_sum_magnitude)

return ratio

a1=np.arange(5).reshape(-1,5)

a2=np.arange(20).reshape(4,5)

print(cosine_similarity(a1,a2))

print(cosine_similarity2(a1,a2))

结果输出:

[[1.0.91465912 0.87845859 0.86154979]]

[1.0.91465912 0.87845859 0.86154979]

足以证明猜想的正确性;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。