精华内容
下载资源
问答
  • 想了解Python 求向量的余弦值操作的相关内容吗,追求卓越583在本文为您仔细讲解Python向量余弦值的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Python,向量,余弦值,下面大家一起来学习吧。1、余弦...

    想了解Python 求向量的余弦值操作的相关内容吗,追求卓越583在本文为您仔细讲解Python向量余弦值的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Python,向量,余弦值,下面大家一起来学习吧。

    1、余弦相似度

    余弦相似度衡量的是2个向量间的夹角大小,通过夹角的余弦值表示结果,因此2个向量的余弦相似度为:

    20210304141419.jpg

    余弦相似度的取值为[-1,1],值越大表示越相似。

    向量夹角的余弦公式很简单,不在此赘述,直接上代码:

    def cosVector(x,y):

    if(len(x)!=len(y)):

    print('error input,x and y is not in the same space')

    return;

    result1=0.0;

    result2=0.0;

    result3=0.0;

    for i in range(len(x)):

    result1+=x[i]*y[i] #sum(X*Y)

    result2+=x[i]**2 #sum(X*X)

    result3+=y[i]**2 #sum(Y*Y)

    #print(result1)

    #print(result2)

    #print(result3)

    print("result is "+str(result1/((result2*result3)**0.5))) #结果显示

    cosVector([2,1],[1,1])

    一个计算二维数组余弦值的例子:

    #求余弦函数

    def cosVector(x,y):

    if(len(x)!=len(y)):

    print('error input,x and y is not in the same space')

    return;

    result1=0.0;

    result2=0.0;

    result3=0.0;

    for i in range(len(x)):

    result1+=x[i]*y[i] #sum(X*Y)

    result2+=x[i]**2 #sum(X*X)

    result3+=y[i]**2 #sum(Y*Y)

    #print("result is "+str(result1/((result2*result3)**0.5))) #结果显示

    return result1/((result2*result3)**0.5)

    #print("result is ",cosVector([2,1],[1,1]))

    #计算query_output(60,20)和db_output(60,20)的余弦值,用60*1的向量存储

    cosResult= [[0]*1 for i in range(60)]

    for i in range(60):

    cosResult[i][0]=cosVector(query_output[i], db_output[i])

    print(cosResult)

    --------------------------------------------------------------------------------------------

    #计算query_output和db_output的余弦值,用60*1的向量存储

    rows=query_output.shape[0] #行数

    cols=query_output.shape[1] #列数

    cosResult= [[0]*1 for i in range(rows)]

    for i in range(rows):

    cosResult[i][0]=cosVector(query_output[i], db_output[i])

    #print(cosResult)

    #将结果存入文件中,并且一行一个数字

    file=open('cosResult.txt','w')

    for i in cosResult:

    file.write(str(i).replace('[','').replace(']','')+'\n') #\r\n为换行符

    file.close()

    补充:python实现余弦近似度

    方法一:

    def cos(vector1,vector2):

    dot_product = 0.0

    normA = 0.0

    normB = 0.0

    for a,b in zip(vector1,vector2):

    dot_product += a*b

    normA += a**2

    normB += b**2

    if normA == 0.0 or normB==0.0:

    return None

    else:

    return 0.5 + 0.5 * dot_product / ((normA*normB)**0.5) #归一化 从[-1,1]到[0,1]

    方法二:

    num = float(A.T * B) #若为行向量则 A * B.T

    denom = linalg.norm(A) * linalg.norm(B)

    cos = num / denom #余弦值

    sim = 0.5 + 0.5 * cos #归一化 从[-1,1]到[0,1]

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

    相关文章

    展开全文
  • Python求向量的余弦值

    万次阅读 2018-04-29 19:55:56
    1、余弦相似度余弦相似度衡量的是2个向量间的夹角大小,通过夹角的余弦值表示结果,因此2个向量的余弦相似度为: cosθ=A⋅B||A||∗||B||(1) 余弦相似度的取值为[-1,1],值越大表示越相似。向量夹角的余弦公式很...

    1、余弦相似度

    余弦相似度衡量的是2个向量间的夹角大小,通过夹角的余弦值表示结果,因此2个向量的余弦相似度为:

                                                                            

    cosθ=AB||A||||B||(1)       

    余弦相似度的取值为[-1,1],值越大表示越相似。

    向量夹角的余弦公式很简单,不在此赘述,直接上代码:

    def cosVector(x,y):
        if(len(x)!=len(y)):
            print('error input,x and y is not in the same space')
            return;
        result1=0.0;
        result2=0.0;
        result3=0.0;
        for i in range(len(x)):
            result1+=x[i]*y[i]   #sum(X*Y)
            result2+=x[i]**2     #sum(X*X)
            result3+=y[i]**2     #sum(Y*Y)
        #print(result1)
        #print(result2)
        #print(result3)
        print("result is "+str(result1/((result2*result3)**0.5))) #结果显示
    cosVector([2,1],[1,1])


    一个计算二维数组余弦值的例子:

    #求余弦函数
    def cosVector(x,y):
        if(len(x)!=len(y)):
            print('error input,x and y is not in the same space')
            return;
        result1=0.0;
        result2=0.0;
        result3=0.0;
        for i in range(len(x)):
            result1+=x[i]*y[i]   #sum(X*Y)
            result2+=x[i]**2     #sum(X*X)
            result3+=y[i]**2     #sum(Y*Y)
        #print("result is "+str(result1/((result2*result3)**0.5))) #结果显示
        return result1/((result2*result3)**0.5)
    #print("result is ",cosVector([2,1],[1,1]))
    
    #计算query_output(60,20)和db_output(60,20)的余弦值,用60*1的向量存储
    
    cosResult= [[0]*1 for i in range(60)]
    
    
    for i in range(60):
        cosResult[i][0]=cosVector(query_output[i], db_output[i])
    
    print(cosResult)
    --------------------------------------------------------------------------------------------
    #计算query_output和db_output的余弦值,用60*1的向量存储
    rows=query_output.shape[0] #行数
    cols=query_output.shape[1] #列数
    cosResult= [[0]*1 for i in range(rows)]
    
    
    for i in range(rows):
        cosResult[i][0]=cosVector(query_output[i], db_output[i])
    
    #print(cosResult)
    #将结果存入文件中,并且一行一个数字
    file=open('cosResult.txt','w')
    for i in cosResult:
      file.write(str(i).replace('[','').replace(']','')+'\n')  #\r\n为换行符
    
    file.close()

    展开全文
  • 本篇文章小编给大家分享一下Python求向量的余弦值操作代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。1、余弦相似度余弦相似度衡量的是2个向量间的夹角...

    本篇文章小编给大家分享一下Python求向量的余弦值操作代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

    1、余弦相似度

    余弦相似度衡量的是2个向量间的夹角大小,通过夹角的余弦值表示结果,因此2个向量的余弦相似度为:

    c614a826536ddcc673f12854d3574783.png

    余弦相似度的取值为[-1,1],值越大表示越相似。

    向量夹角的余弦公式很简单,不在此赘述,直接上代码:

    def cosVector(x,y):

    if(len(x)!=len(y)):

    print('error input,x and y is not in the same space')

    return;

    result1=0.0;

    result2=0.0;

    result3=0.0;

    for i in range(len(x)):

    result1+=x[i]*y[i] #sum(X*Y)

    result2+=x[i]**2 #sum(X*X)

    result3+=y[i]**2 #sum(Y*Y)

    #print(result1)

    #print(result2)

    #print(result3)

    print("result is "+str(result1/((result2*result3)**0.5))) #结果显示

    cosVector([2,1],[1,1])

    一个计算二维数组余弦值的例子:

    #求余弦函数

    def cosVector(x,y):

    if(len(x)!=len(y)):

    print('error input,x and y is not in the same space')

    return;

    result1=0.0;

    result2=0.0;

    result3=0.0;

    for i in range(len(x)):

    result1+=x[i]*y[i] #sum(X*Y)

    result2+=x[i]**2 #sum(X*X)

    result3+=y[i]**2 #sum(Y*Y)

    #print("result is "+str(result1/((result2*result3)**0.5))) #结果显示

    return result1/((result2*result3)**0.5)

    #print("result is ",cosVector([2,1],[1,1]))

    #计算query_output(60,20)和db_output(60,20)的余弦值,用60*1的向量存储

    cosResult= [[0]*1 for i in range(60)]

    for i in range(60):

    cosResult[i][0]=cosVector(query_output[i], db_output[i])

    print(cosResult)

    --------------------------------------------------------------------------------------------

    #计算query_output和db_output的余弦值,用60*1的向量存储

    rows=query_output.shape[0] #行数

    cols=query_output.shape[1] #列数

    cosResult= [[0]*1 for i in range(rows)]

    for i in range(rows):

    cosResult[i][0]=cosVector(query_output[i], db_output[i])

    #print(cosResult)

    #将结果存入文件中,并且一行一个数字

    file=open('cosResult.txt','w')

    for i in cosResult:

    file.write(str(i).replace('[','').replace(']','')+'\n') #\r\n为换行符

    file.close()

    展开全文
  • 说明:三角函数的余弦值Cos我想,每个学计算机的理工人都知道,但是真的明白它的用途,我也是刚明白。每个人在初中或者高中的时候,都有这么个疑惑,学三角函数干什么用的?很直白的答案就是考试用的。而且当时的...

    说明:三角函数的余弦值Cos我想,每个学计算机的理工人都知道,但是真的明白它的用途,我也是刚明白。每个人在初中或者高中的时候,都有这么个疑惑,学三角函数干什么用的?很直白的答案就是考试用的。而且当时的老师只管教,只管怎么解题,至于将学习的知识运用到生活中,没有这门课堂。最终的结果却是,我们只知道学,不知道用。说来也惭愧啊,我也是看了吴军博士的《数学之美》,才领悟到的。这本书真的给我很多的启发。

    Cos的用途:

    1. 考试用。
    2. 通过计算2个向量,可以知道他们的相似度。余弦值越小,则2个向量越垂直,余弦值越接近1,则这个向量就越平行(相似)。这样,我们就可以将向量抽象为事物的特征集合了。计算向量的余弦值,就可以判断事物的相似度。至于详细的运用领域,还是读读这本书吧。

    代码中的Cosine.cs是我很早从网上搜到的,地址也忘了。

    计算代码如下:

    Cosine.cs类

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Cosine
        {
            /// <summary>
            /// 计算向量余弦值
            /// </summary>
            /// <param name="vector1"></param>
            /// <param name="vector2"></param>
            public static double Calculate(Dictionary<int, double> vector1, Dictionary<int, double> vector2)
            {
                double dotProduct = CalcDotProduct(vector1, vector2);
                double length1 = CalcLength(vector1);
                double length2 = CalcLength(vector2);
                double cosine = dotProduct / (length1 * length2);
                return cosine;
            }
            /// <summary>
            /// 计算向量长度(vector length)
            /// </summary>
            /// <param name="vector"></param>
            /// <returns></returns>
            private static double CalcLength(Dictionary<int, double> vector)
            {
                double length = 0;
                foreach (KeyValuePair<int, double> kvp in vector)
                {
                    length += Math.Pow(kvp.Value, 2);
                }
                return Math.Sqrt(length);
            }
    
            /// <summary>
            /// 计算向量点积(dot product)/内积(inner product)
            /// </summary>
            /// <param name="vector1"></param>
            /// <param name="vector2"></param>
            /// <returns></returns>
            private static double CalcDotProduct(Dictionary<int, double> vector1, Dictionary<int, double> vector2)
            {
                double dotProduct = 0;
                foreach (KeyValuePair<int, double> kvp in vector1)
                {
                    if (vector2.ContainsKey(kvp.Key))
                    {
                        dotProduct += kvp.Value * vector2[kvp.Key];
                    }
                }
                return dotProduct;
            }
        }
    }

     

    Program类,是我的,嘿嘿。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            //自定义输入函数
            static void FunInput(Dictionary<int, double> Vector, int num)
            {
                for (int i = 0; i < num; i++)
                {
                    Vector.Add(i, double.Parse(Console.ReadLine()));
                }
            }
    
            //自定义输出函数
            static void FunOutput(Dictionary<int, double> Vector)
            {
                //使用KeyValuePair输出
                foreach (KeyValuePair<int, double> number in Vector)
                {
                    Console.WriteLine("{0}---{1}", number.Key, number.Value);
                }
            }
    
            static void Main(string[] args)
            {
                Dictionary<int, double> Vector1 = new Dictionary<int,double>();
                Dictionary<int, double> Vector2 = new Dictionary<int,double>();
    
                Console.WriteLine("这2个向量的维度数必须相同,请输入维度数值:");
                int num = int.Parse(Console.ReadLine());//字符串转化为整形
    
                Console.WriteLine("请输入Vector1向量的{0}个数值(每行一个):",num);
                FunInput(Vector1, num);
                //FunOutput(Vector1);
    
                Console.WriteLine("请输入Vector2向量的{0}个数值(每行一个):", num);
                FunInput(Vector2, num);
                //FunOutput(Vector2);
                Console.WriteLine("Vector1和Vector2的余弦值是:{0}",Cosine.Calculate(Vector1,Vector2));            
            }
        }
    }

     

    转载于:https://www.cnblogs.com/zi-xing/p/4199634.html

    展开全文
  • def cos_sita(a, b): import math if len(a) != len(b): return None part_up = 0.0 a_sq = 0.0 b_sq = 0.0 for a1, b1 in zip(a,b): part_up += a1*b1 a_sq += a1**2 ... part_down = math.sqrt(a_sq*b_sq) ...
  • PythonicPython向量夹角余弦值计算

    千次阅读 2020-09-20 19:29:36
    PythonicPython向量夹角余弦值计算 通过公式我们知道,cos⁡(x⃗,y⃗)=x⃗⋅y⃗∣x⃗∣×∣y⃗∣\cos{(\vec{x}, \vec{y})} = \frac{\vec{x}\cdot\vec{y}}{|\vec{x}|\times|\vec{y}|}cos(x,y​)=∣x∣×∣y​∣x⋅y...
  • 向量余弦值pythonPrerequisite: 先决条件: Defining a Vector定义向量 Defining a Matrix定义矩阵 Numpy is the library of function that helps to construct or manipulate matrices and vectors. The function...
  • keras求两向量间的余弦值 具体要自己定义一个layer,余弦相似度计算公式如下: 步骤: 计算两个向量L2范数,计算两个向量的点乘 点乘结果除以L2范数乘积,分母不能为0 import keras.backend as K from keras....
  • 向量空间余弦相似度

    2019-06-20 10:35:25
    设向量a和向量b ...cos即为两向量的余弦值,所以cos=a•b/|a||b| 距离和相似性度量: http://blog.sina.com.cn/s/blog_6045a9da01011nk7.html 转载于:https://www.cnblogs.com/lsai/p/3715948.html...
  • 向量余弦值(Cosine)(C#)

    2011-04-11 22:42:00
    接前面一篇TF-IDF的代码,用其结果来计算出向量的余弦值的代码 View Code usingSystem; usingSystem.Collections.Generic; usingSystem.Text; namespaceCluster { staticclassCosine { ///<sum...
  • 余弦值的范围在[-1,1]之间,值越趋近于1,代表两个向量的方向越接近; 越趋近于-1,他们的方向越相反; 接近于0,表示两个向量近乎于正交。 float comparator(const float* comp1, const float* comp2) // 传入两个...
  • 看到了许多求向量夹角余弦值的算法,感觉不够简单,我自己写一个,代码的行数是比较多,但比较容易理解。 a=[1,2,3,5,6] b=[1,5,4,1,6] def mo(vector): # 计算向量的模 sq = [i**2 for i in vector] # 把数组转...
  • 计算法向量与平面的余弦值 #include #include #include #include "stdio.h" #include #define npoint 235992 double mo(double i,double j,double k) {
  • 分享:用Python计算两个向量之间夹角余弦值 用Python计算两个向量之间夹角余弦值 http://my.oschina.net/u/170911/blog/124787 ...
  • 使用scipy 计算预选 from scipy.spatial import distance print(1-distance.cosine([1,0],[0,1])) 具体 应用:使用bert 计算 相似度 import keras_bert from scipy.spatial import distance # bert 模型地址...
  • 向量 - 模 余弦值 和 方向角计算

    千次阅读 2019-05-31 14:38:58
  • 向量夹角的余弦公式很简单,不在此赘述,直接上代码: def cosVector(x,y): if(len(x)!=len(y)): print('error input,x and y is not in the same space') return; result1=0.0; result2=0.0; result3=0.0;...
  • 参考:... 在文本挖掘中计算2篇文章相似度常用向量空间模型中的余弦定理公式判断。 ...1、 向量空间模式介绍 ...在空间模型中,两条线的夹角越小,它们的余弦值就越大,而它们越相似(重叠或者平行)
  • 余弦相似度

    千次阅读 2016-03-20 13:26:45
    一、 概念与定义 余弦相似度,又称为余弦相似性。...将两个文本根据他们词,建立俩个向量,计算这两个向量的余弦值,就可以知道两个文本在统计学方法中他们的相似度情况。实践证明,这是一个非常有效的方法
  • 通过计算两个向量的夹角余弦值以此来评估它们的相似度 给定两个属性向量,A和B,其余弦相似系数可由点积和向量长度给出: 角相似系数: 角相似系数的优点是,当作为一个差异系数(从1减去它)时,产生的...
  • 介绍一个php数据分析之余弦相似度实现函数类。数据分析引擎,分析向量的元素 必须和基准向量的元素一致,取最大个数,分析向量不足元素以0填补。求出分析向量与基准向量的余弦值
  • * 求出分析向量与基准向量的余弦值 * @author yu.guo@okhqb.com */ /** * 获得向量的模 * @param unknown_type $array 传入分析数据的基准点的N维向量。|eg:array(1,1,1,1,1); */ function getMarkMod($...
  • 编程实现任意给定两个相同维度的向量之间夹角余弦相似度计算函数sim=sim_COS(x,y)。输入:两个任意k维向量x和y,其中k的值随由数据决定。 数据 测试代码如下: x=[3,20,3.5]; y=[-3,34,7]; sim=sim_COS(x,y); ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 729
精华内容 291
关键字:

向量的余弦值