标签:
题目描述:给你两个相同大小的向量 A B,求出他们的余弦相似度;返回 2.0000 如果余弦相似不合法 (比如 A = [0] B = [0]).
样例:给出 A = [1, 2, 3], B = [2, 3 ,4]. 返回 0.9926,给出 A = [0], B = [0]. 返回 2.0000
python计算这种数据科学的东西简直是举重若轻,即使不用任何第三方的库,也能以很简洁的代码完成运算。
计算两个向量的余弦值是机器学习中判断两个向量相似度的的重要方法。其实除了余弦值之外,还有很多其他的方法,他们各有优劣,这件事在以后一定会写篇专门的东西总结,现在主要还是解决lintcode这些题目。
余弦值的公式如下:
按照公式,写出代码即可,方便起见,可以独立写一个计算向量内积的函数,以供主函数调用:
class Solution:
"""
@param A: An integer array.
@param B: An integer array.
@return: Cosine similarity.
"""
def cosineSimilarity(self, A, B):
t1 = self.inner(A, B)
t2 = self.inner(A, A)
t3 = self.inner(B, B)
if t2 == 0 or t3 == 0:
return 2
return t1 / (pow(t2, 0.5) * pow(t3, 0.5))
def inner(self, A, B):
count, i = 0, 0
n = len(A)
while i < n:
count += (A[i] * B[i])
i += 1
return count标签:
原文地址:http://blog.csdn.net/guoziqing506/article/details/51601238