余弦相似度Cosine Sim

news/2024/12/16 14:35:20/

what

余弦相似度是一种用于度量向量相似性的metric。

c o s θ = A . B ∣ A ∣ . ∣ B ∣ cos\theta = \frac{A.B}{|A|.|B|} cosθ=A∣.∣BA.B

  • A.B:向量的内积
  • |A|:向量的模长
  • c o s θ cos\theta cosθ:的范围$ [ -1 , 1 ] $

why

余弦相似度的计算复杂度很低,对于稀疏向量而言,只用考虑非零向量

How

math库实现

python">import numpy as np
import mathdef cosine_similarity(vec1, vec2) -> float:norm_vec1, norm_vec2 = 0, 0dot_product = 0for v1, v2 in zip(vec1, vec2):dot_product += v1 * v2norm_vec1 += v1 * v1norm_vec2 += v2 * v2norm_vec1 = math.sqrt(norm_vec1)norm_vec2 = math.sqrt(norm_vec2)return dot_product / (norm_vec1 * norm_vec2)if __name__ == '__main__':print(cosine_similarity([1, 2, 3], [-1, -2, -3]))

numpy实现

python">import numpy as npdef cosine_similarity(vec1, vec2) -> float:norm_vec1 = np.linalg.norm(vec1)norm_vec2 = np.linalg.norm(vec2)return np.dot(vec1, vec2) / (norm_vec1 * norm_vec2)if __name__ == '__main__':print(cosine_similarity([1, 2, 3], [1, 2, 3]))

pytorch实现

python">import torch
import torch.nn.functional as Fvec1 = torch.FloatTensor([1, 2, 3, 4])
vec2 = torch.FloatTensor([5, 6, 7, 8])cos_sim = F.cosine_similarity(vec1, vec2, dim=0)
print(cos_sim) 

http://www.ppmy.cn/news/1555609.html

相关文章

噪杂环境(房车改装市场)离线语音通断器模块

一直在坚持,却很难有机会上热门,在现在这个以流量为导向的时代,貌似很难靠所谓的坚守和热爱把产品成功的推向市场了。目前的客户仍然是以老客户为主,应用场景主要是房车改装,根据九客户的需求定制化一些模块。因为没有…

java抽奖系统(七)

8. 抽奖活动 8.1 新建抽奖活动 创建的活动信息包含: i. 活动名称 ii. 活动描述 iii. 圈选奖品:勾选对应奖品,并设置奖品等级(⼀⼆三等奖),及奖品数量 iv. 圈选⼈员:勾选参与抽奖⼈员 库表关联…

Linux的基本功能和命令

Linux的基本功能和命令 切换目录 pwd 查询当前目录地址 cd /xxx/xxx 转到目录 cd …/ 回到上一级目录 cd ./ 当前目录 创建、删除文件/文件夹 创建文件\文件夹 touch filename 创建空文件mkdir 创建目录 mkdir -p 目标目录存在也不报错mkdir -p xxx/xxx 递归创建目录…

systemverilog中的循环(loop)

什么是循环? 循环是一段会反复执行的代码。循环中通常包含一个条件语句,以便在条件变为真时能够终止循环。如果循环一直运行下去,那么仿真就会无限期地停滞。 SystemVerilog中不同类型的循环结构如下表所示。 1 forever 这是一个无限循环&am…

蓝桥杯刷题——day5

蓝桥杯刷题——day5 题目一题干解题思路一代码解题思路二代码 题目二题干解题思路代码 题目一 题干 给定n个整数 a1,a2,⋯ ,an,求它们两两相乘再相加的和,即: 示例一: 输入: 4 1 3 6 9 输出: 117 题目链…

Three.js css2d Css3D的使用

Three.js css2d Css3D的使用 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { CSS2DRenderer, CSS2DObject } from three/examples/jsm/renderers/CSS2DRenderer.js import { CSS3DRenderer, CSS3DObject…

【操作系统】实验二:观察Linux,使用proc文件系统

实验二 观察Linux,使用proc文件系统 实验目的:学习Linux内核、进程、存储和其他资源的一些重要特征。读/proc/stat文件,计算并显示系统CPU占用率和用户态CPU占用率。(编写一个程序使用/proc机制获得以及修改机器的各种资源参数。…

网站被间歇性扫描,IP不断更换,我的应对方法

文章目录 背景应对方式封ip自动不响应策略代码为啥不上其他防护软件呢? 背景 我负责的一个网站,不出名,平时也没多少流量。1天有几百个就不错了。没想到,这么不起眼的网站也有被人盯上的时候。 一天,后台使用人员告诉…