python求余弦值,Python elasticsearch
想了解计算机编程语言求向量的余弦值操作的相关内容吗,追求卓越583在本文为您仔细讲解计算机编程语言向量余弦值的相关知识和一些密码实例,欢迎阅读和指正,我们先划重点:Python,向量,余弦值,下面大家一起来学习吧。
1、余弦相似度
余弦相似度衡量的是2个向量间的夹角大小,通过夹角的余弦值表示结果,因此2个向量的余弦相似度为:
余弦相似度的取值为[-1,1],值越大表示越相似。
向量夹角的余弦公式很简单,不在此赘述,直接上代码:
def cosVector(x,y):
if(len(x)!=len(y)):
打印("错误输入,x和y不在同一空间")
返回;
结果1=0.0;
结果2=0.0;
结果3=0.0;
对于范围内的我(len(x)):
result1=x[i]*y[i] #sum(X*Y)
结果2=X[I]* * 2 #总和(X*X)
结果3=Y[I]* * 2 #总和(Y*Y)
#打印(结果1)
#打印(结果2)
#打印(结果3)
print( result is str(结果1/((结果2 *结果3)* * 0.5)))#结果显示
余弦向量([2,1],[1,1])
一个计算二维数组余弦值的例子:
#求余弦函数
def cosVector(x,y):
if(len(x)!=len(y)):
打印("错误输入,x和y不在同一空间")
返回;
结果1=0.0;
结果2=0.0;
结果3=0.0;
对于范围内的我(len(x)):
result1=x[i]*y[i] #sum(X*Y)
结果2=X[I]* * 2 #总和(X*X)
结果3=Y[I]* * 2 #总和(Y*Y)
# print( result is str(结果1/((结果2 *结果3)* * 0.5)))#结果显示
返回结果1/((结果2 *结果3)**0.5)
#print(result is ,cosVector([2,1],[1,1]))
#计算查询输出(60,20)和数据库输出(60,20)的余弦值,用60*1的向量存储
cos result=[[0]* 1 for I in range(60)]
对于范围内的我(60岁):
cos结果[I][0]=cos向量(query _ output[I],db_output[i])
打印(成本结果)
-
#计算查询_输出和数据库输出的余弦值,用60*1的向量存储
row=查询输出。形状[0]#行数
cols=query_output.shape[1] #列数
cos result=[[0]* 1 for I in range(rows)]
对于范围内的我(行):
cos结果[I][0]=cos向量(query _ output[I],db_output[i])
#打印(成本结果)
#将结果存入文件中,并且一行一个数字
file=open(cosResult.txt , w )
对于cosResult中的我:
file.write(str(i)).替换([, )。替换(], ) \n) #\r\n为换行符
file.close()
补充:python实现余弦近似度
方法一:
定义cos(向量1,向量2):
点积=0.0
normA=0.0
normB=0.0
对于活力中的甲、乙(向量1、向量2):
点积=a*b
诺玛=a**2
normB=b**2
如果normA==0.0或normB==0.0:
不返回
否则:
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。规范(A)* linalg。标准(B)
cos=num/denom #余弦值
sim=0.5 0.5 * cos #归一化从[-1,1]到[0,1]
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
相关文章
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。