当前位置: 首页 > news >正文

第十八章 番外 余弦相似度

余弦相似度(Cosine Similarity)是一种衡量两个非零向量之间角度的度量方式,用于评估它们之间的相似性。它的值范围从 -1 到 1,其中 1 表示完全相同的方向(即向量完全相同),0 表示正交(没有相似性),而 -1 表示完全相反的方向。

假设我们有两个向量 A 和 B,它们的余弦相似度可以通过以下公式计算:

$ \text{similarity} = \cos(\theta) = \frac{\mathbf{A} \cdot \mathbf{B}}{|\mathbf{A}| |\mathbf{B}|} $

其中:

  • $ \mathbf{A} \cdot \mathbf{B} $ 是向量 A 和 B 的点积(内积)。
  • $ |\mathbf{A}| 和 和 |\mathbf{B}| $ 分别是向量 A 和 B 的模长(长度)。

具体来说:

  • 点积(内积):$ \mathbf{A} \cdot \mathbf{B} = \sum_{i=1}^{n} A_i B_i $,其中 (n) 是向量的维度。
  • 模长(长度):$ |\mathbf{A}| = \sqrt{\sum_{i=1}{n} A_i^2} $。

公式可以进一步展开为:

$ \text{similarity} = \frac{\sum\limits_{i=1}^{n} A_i B_i}{\sqrt{\sum\limits_{i=1}^{n} A_i^2} \sqrt{\sum\limits_{i=1}^{n} B_i^2}} $

示例计算

假设我们有两个向量 A 和 B,其中:

  • $ \mathbf{A} = [1, 2, 3] $
  • $ \mathbf{B} = [4, 5, 6] $

我们可以按照上述公式计算它们之间的余弦相似度:

  1. 点积
    $ \mathbf{A} \cdot \mathbf{B} = 14 + 25 + 3*6 = 4 + 10 + 18 = 32 $
  2. 模长
    • $ |\mathbf{A}| = \sqrt{12 + 22 + 3^2} = \sqrt{1 + 4 + 9} = \sqrt{14} $
    • $ |\mathbf{B}| = \sqrt{42 + 52 + 6^2} = \sqrt{16 + 25 + 36} = \sqrt{77} $
  3. 余弦相似度
    $ \text{similarity} = \frac{32}{\sqrt{14} \sqrt{77}} = \frac{32}{\sqrt{1078}} $

我们可以使用 Python 来计算这个值:

import numpy as np# 定义两个向量
vector_a = np.array([1, 2, 3])
vector_b = np.array([4, 5, 6])# 计算点积
dot_product = np.dot(vector_a, vector_b)# 计算模长
norm_a = np.linalg.norm(vector_a)
norm_b = np.linalg.norm(vector_b)# 计算余弦相似度
cosine_similarity = dot_product / (norm_a * norm_b)print("Cosine similarity:", cosine_similarity)
http://www.lryc.cn/news/436998.html

相关文章:

  • HPA和helm
  • 基于人工智能的智能语音助手
  • java实际开发——数据库存储金额时用什么数据类型?(MySQL、PostgreSQL)
  • Java 设计模式-状态模式
  • 2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘
  • 动态IP池的IP都是纯净IP吗?
  • 【MySQL】查询表中重复数据、模糊查询列信息、快速copy表数据(1)
  • 计算机操作系统之并行性与并发性笔记
  • 顶级高效的ChatGPT论文润色提示词和使用技巧
  • WebAPI (一)DOM树、DOM对象,操作元素样式(style className,classList)。表单元素属性。自定义属性。间歇函数定时器
  • 若依框架开发
  • 局域网windows下使用Git
  • Redis访问工具
  • vue3+ant design vue动态实现级联菜单~
  • 软件可维护性因素例题
  • git的一些操作
  • opencv实战项目二十三:基于BEBLID描述符的特征点匹配实现表盘校正
  • 数据库是全表扫描是怎么扫描法?
  • 认准这10款人力资源系统,90%的企业都在用!
  • 2024年我的利基出版转型——新战略与重点解析
  • 【数据结构】双向链表专题
  • 大二上学期计划安排
  • HarmonyOS开发实战( Beta5.0)图片编辑实现马赛克效果详解
  • 【新书介绍】《JavaScript前端开发与实例教程(微课视频版)(第2版)》
  • 什么是GWAS全基因组关联分析?
  • k8s dashboard token 生成/获取
  • windows@openssh免密登陆配置@基于powershell快速配置脚本
  • 【深度学习】【图像分类】【OnnxRuntime】【Python】VggNet模型部署
  • 手写排班日历
  • SpringBoot多数据源配置