欧式距离余弦相似度matlab,TensorFlow | 计算欧式距离和余弦相似度

计算两个向量的欧氏距离

>>> import numpy

>>> vec1=[[1,1,1],[2,2,2]]

>>> vec2=[[2,2,2],[1,1,1]]

>>> vec1=numpy.array(vec1)

>>> vec2=numpy.array(vec2)

>>> vec1

array([[1, 1, 1],

[2, 2, 2]])

>>> vec2

array([[2, 2, 2],

[1, 1, 1]])

>>> dist = numpy.sqrt(numpy.sum(numpy.square(vec1 - vec2)))

>>> dist

2.4494897427831779>>> numpy.linalg.norm(vec1-vec2)

2.4494897427831779计算两个向量的余弦相似度

>>> vec1

array([[1, 1, 1],

[2, 2, 2]])

>>> vec2

array([[2, 2, 2],

[1, 1, 1]])

>>> num=float(numpy.sum(vec1*vec2))

>>> num

12.0>>> denom=numpy.linalg.norm(vec1)*numpy.linalg.norm(vec2)

>>> cos=num/denom

>>> denom

15.000000000000002>>> cos

0.79999999999999993>>> sim=0.5+0.5*cos

>>> sim

0.89999999999999991计算多维向量的余弦距离

def cosine_distance(x1, x2):

x1_norm = tf.sqrt(tf.reduce_sum(tf.square(x1), axis=1))

x2_norm = tf.sqrt(tf.reduce_sum(tf.square(x2), axis=1))

# 内积

x1_x2 = tf.reduce_sum(tf.multiply(x1, x2), axis=1)

cosin = x1_x2 / (x1_norm * x2_norm)

return cosin

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值