码迷,mamicode.com
首页 > 其他好文 > 详细

余弦相似度

时间:2016-06-12 03:19:31      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

题目描述:给你两个相同大小的向量 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

其实,python有非常强大的第三方函数库:numpy. 用来解决科学计算问题是非常方便的,具体怎么用,以后有机会会具体讲。

余弦相似度

标签:

原文地址:http://blog.csdn.net/guoziqing506/article/details/51601238

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!