简单的向量相似度计算实现


import math
from itertools import imap
v1 = [30, 20, 20, 10, 0]
v2 = [40, 0, 30, 20, 10]

dot_product = sum(imap(lambda a, b: a * b, v1, v2))
module_one = math.sqrt(sum(imap(lambda a, b: a * b, v1, v1)))
module_two = math.sqrt(sum(imap(lambda a, b: a * b, v2, v2)))

similarity = -1

try:
   = float(dot_product) / (module_one * module_two)
except Exception,e:
  print "ZeroDivisonError,check it"

print similarity

具体解释参考 http://cyxinda.blog.163.com/blog/static/3659618620136306469889/

posted @ 2014-09-12 16:53  jaw-crusher  阅读(395)  评论(0编辑  收藏  举报