余弦相似度

题目描述:给你两个相同大小的向量 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. 用来解决科学计算问题是非常方便的,具体怎么用,以后有机会会具体讲。

时间: 2024-08-02 02:44:07

余弦相似度的相关文章

余弦相似度应用

http://www.ruanyifeng.com/blog/2013/03/tf-idf.html TF-IDF与余弦相似性的应用(一):自动提取关键词 http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html TF-IDF与余弦相似性的应用(二):找出相似文章 http://www.ruanyifeng.com/blog/2013/03/automatic_summarization.html TF-IDF与余弦相似性的应用(

Python简单实现基于VSM的余弦相似度计算

在知识图谱构建阶段的实体对齐和属性值决策.判断一篇文章是否是你喜欢的文章.比较两篇文章的相似性等实例中,都涉及到了向量空间模型(Vector Space Model,简称VSM)和余弦相似度计算相关知识.        这篇文章主要是先叙述VSM和余弦相似度相关理论知识,然后引用阮一峰大神的例子进行解释,最后通过Python简单实现百度百科和互动百科Infobox的余弦相似度计算. 一. 基础知识 第一部分参考我的文章: 基于VSM的命名实体识别.歧义消解和指代消解 第一步,向量空间模型VSM 

Jackcard类似度和余弦类似度(向量空间模型)的java实现

版权声明:本文为博主原创文章,地址:http://blog.csdn.net/napoay,转载请留言. 总结Jackcard类似度和余弦类似度. 一.集合的Jackcard类似度 1.1Jackcard类似度 Jaccard类似指数用来度量两个集合之间的类似性,它被定义为两个集合交集的元素个数除以并集的元素个数. 数学公式描写叙述: J(A,B)=|A∩B||A∪B| 这个看似简单的算法有非常大的用处.比方: 抄袭文档 高明的抄袭者为了掩盖自己抄袭的事实,会选择性的抄袭文档中的一些段落,或者对

数据挖据之余弦相识度

# coding:utf-8 __author__ = 'hdfs' from math import sqrt users = { "Angelica": {"Blues Traveler": 3.5, "Broken Bells": 2.0, "Norah Jones": 4.5, "Phoenix": 5.0, "Slightly Stoopid": 1.5, "The

spark MLlib 概念 5: 余弦相似度(Cosine similarity)

概述: 余弦相似度 是对两个向量相似度的描述,表现为两个向量的夹角的余弦值.当方向相同时(调度为0),余弦值为1,标识强相关:当相互垂直时(在线性代数里,两个维度垂直意味着他们相互独立),余弦值为0,标识他们无关. Cosine similarity is a measure of similarity between two vectors of an inner product space that measures the cosine of the angle between them.

php-数据分析 余弦相似度实现

php-数据分析 余弦相似度实现 <?php /** * 数据分析引擎 * 分析向量的元素 必须和基准向量的元素一致,取最大个数,分析向量不足元素以0填补. * 求出分析向量与基准向量的余弦值 * @author [email protected] */ /** * 获得向量的模 * @param unknown_type $array 传入分析数据的基准点的N维向量.|eg:array(1,1,1,1,1); */ function getMarkMod($arrParam){ $strMod

&lt;tf-idf + 余弦相似度&gt; 计算文章的相似度

背景知识: (1)tf-idf 按照词TF-IDF值来衡量该词在该文档中的重要性的指导思想:如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词. tf–idf is the product of two statistics, term frequency and inverse document frequency. //Various ways for determining the exact values of both stati

Mahout基于余弦相似度的评估

/* * 这段程序对于基于余弦相似度的评估 * */ package byuser; import java.io.File; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.taste.eval.RecommenderBuilder; import org.apache.mahout.cf.taste.eval.RecommenderEvaluator; import or

Jackcard相似度和余弦相似度(向量空间模型)的java实现

版权声明:本文为博主原创文章,地址:http://blog.csdn.net/napoay,转载请留言. 总结Jackcard相似度和余弦相似度. 一.集合的Jackcard相似度 1.1Jackcard相似度 Jaccard相似指数用来度量两个集合之间的相似性,它被定义为两个集合交集的元素个数除以并集的元素个数. 数学公式描述: J(A,B)=|A∩B||A∪B| 这个看似简单的算法有很大的用处,比如: 抄袭文档 高明的抄袭者为了掩盖自己抄袭的事实,会选择性的抄袭文档中的一些段落,或者对词语或