范数的意义与计算方法(使用NumPy)

news2024/12/24 8:46:27

1. 范数的意义

范数可以简单的理解为“距离”。由于向量是既有大小又有方向的量,所以向量是不能直接比较大小的,但是范数提供了一种方法,可以将所有的向量转化为一个实数,然后就可以比较向量的大小了。(注:本文我们只讨论向量范数,向量范数表征向量空间中向量的大小,另一种叫矩阵范数,表征矩阵引起变化的大小。本文地址:https://blog.csdn.net/bluishglc/article/details/128642156,转载请注明出处)

2. 范数的计算方法

范数并不是一个数,而是一组数,我们先了解一下最常用的L-2范数范数,它的计算方法是:将向量的每一个分量平方后再求和,然后对和开平方,得到的就是这个向量的L-2范数范数了,使用公式描述就是:

  • L-2范数

请添加图片描述

公式1:L-2范数计算公式

其中x1到xn是向量中的每一个分量。L-2范数范数度量的是向量到原点的距离,这个距离正是向量的“模”(Magnitude)(“模”指的就是向量的长度)。我们将在后面深入介绍L-2范数及其应用。

  • L-1范数

L1型范数的就是所有元素的绝对值之和。对于L-1范数的应用我们留待以后介绍。

请添加图片描述

公式2:L-1范数计算公式

  • L-P范数

前面说过:范数并不是一个数,而是一组数,这取决于对每一个分量求的是几次方和对和开的几次方根,通用的范数公式是这样:

请添加图片描述

公式3:L-P范数计算公式

当P取2时,上述公式就是L-2范数,当P取1时,上述公式就是L-1范数。

3. “两个向量间的”L-2范数

我们说范数度量的是两个向量之间的距离,即:度量的是它们之间的相似程度或者说差异程度,但是从L-2范数的计算公式上可以看出,它只用了一个向量,这个怎么解释呢?其实L-2范数计算的是:向量到原点的距离。我们来看下面这个公式:

请添加图片描述

公式4:(两个向量间的)L-P范数计算公式

这是L-P范数的另一种表述形式,它计算的是两个向量(ax, ay, …, az)和(bx, by, …, bz)之间的距离。为了便于区分,我们把前面的L-2范数公式称为:(单向量)L-2范数公式,前后对比一下就会发现:当P=2,B=(0, 0, …, 0)时,就会“退化”成(单向量)L-2范数公式。所以说:(单向量)L-2范数计算的向前向量和0向量(原点)之间的距离,由于原点处的向量各分量均为0,减与不减没有分别别,所以才看上去只有一个向量参与计算。此外,当P=2时,上述公式计算出的“两个向量间的”距离就是欧式距离

利用这个可以直接计算两向量间距离的L-2范数公式,我们用一个例子看一下如何计算两个向量间的欧式距离。假设二维平面上有A(2,3)和B(3,1)两个点,如图所示:

在这里插入图片描述

图1:两个向量间的“距离”

A,B同时也是两个向量,套用L-2范数范数计算公式,可以计算出向量A(2,3)的L-2范数范数约为:3.6,这个值也是向量A的模,也就是A点到原点的距离。同理,向量B(3,1)的L-2范数范数约为:3.16。我们现在可以说:向量A(2,3)到0向量(0,0)的距离是3.6,向量B(3,1)到0向量(0,0)的距离是3.16。那向量A到向量B的距离怎么算呢?套用上面的公式,可得结果约为2.236, 计算过程如下:

在这里插入图片描述
备注:目前互联网上的文章对标准L-2范数公式没有定论,有的使用是公式1(单向量版本),有的使用的是公式1(两向量差版本),虽然两个公式其实是统一的,但是从NumPy的计算方式来看,计算L-2范数使用的是公式1。

4. 使用NumPy计算范数

虽然范数的计算规则并不复杂,但是对于元素数量较多的向量来说,计算起来还是很麻烦的,为此,NumPy提供了专门用于计算各型范数的函数:numpy.linalg.norm(),官方文档:https://numpy.org/doc/stable/reference/generated/numpy.linalg.norm.html#numpy.linalg.norm,下图解释了该函数3个核心参数的意义:

请添加图片描述

5. 计算(单向量)范数

现在我们就用NumPy的norm函数去计算一个二维数组的L-2范数。在下面的示例代码中,我们没有显式设定ord参数,所以求的是L-2范数。对于axis参数的设置符合NumPy的默认惯例:

  • 不设置axis参数是求整个数组(所有元素)的范数
  • 显式设置axis=0是求列向量的范数
  • 显式设置axis=1是求行向量的范数
import numpy as np
# author: https://laurence.blog.csdn.net/

samples=[[-1, 1, 3],
         [-1, 3, 2]]

# 计算列向量的L2范数
samples_norms = np.linalg.norm(samples, axis=0)
print(f"samples norms by column: \n{samples_norms}")

# 计算行向量的L2范数
samples_norms = np.linalg.norm(samples, axis=1)
print(f"samples norms by row: \n{samples_norms}")

# 计算整个二维数组(即所有元素)的L2范数
samples_norms = np.linalg.norm(samples)
print(f"samples norm: \n{samples_norms}")

程序输出:

samples norms by column: 
[1.41421356 3.16227766 3.60555128]
samples norms by row: 
[3.31662479 3.74165739]
samples norm: 
5.0

计算(两向量间的)范数(相似度)

下面我们从单一向量拓展到计算两个向量间的范数。我们就直接借用图1所示的案例,计算向量A(2,3)和B(3,1)间的距离。NumPy并没有直接提供相应的函数,但是这个计算只需拆解为两步就能完成,所以还是非常简单的。首先,向量A(2,3)和B(3,1)间的距离其实就是向量B减去向量A得到的一个差值向量,它的“长度”就是AB间的距离。所以我们只需要求出向量B减去向量A的差值向量,然后用norm函数算出它的l-2范数就可以了。NumPy也为我们直接提供了向量的减法支持,以下是实际代码:

import numpy as np
# author: https://laurence.blog.csdn.net/

A = np.array([2,3])
B = np.array([3,1])

# 使用NumPy数组减法直接求得差向量
AB = B-A

print(f"AB = {AB}")
# 计算差向量的大小(L-2范数),结果就是向量A到向量B的“距离”
# 也就是度量向量A到向量B相似程度的一个数值!
ab_norm = np.linalg.norm(AB)
print(f"Distance between A and B: {ab_norm}")

程序输出:

AB = [ 1 -2]
Distance between A and B: 2.23606797749979

参考:

Normalization using NumPy norm

Vector Norms: quick explanation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154876.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端Vue和Element-UI配合后端接口进行数据交互

前言 本次用element-ui的table组件,简单案例演示下前后端数据交互。 前提声明:如果不知道如何在vue中引入element-ui,可以先看下这篇文章:Vue引入并使用Element-UI组件库的两种方式 静态页面 首先先写一个静态页面吧,数据都是…

《Linux运维实战:Centos7.6基于ansible一键离线部署redis6.2.8容器版之cluster集群》

一、部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署redis cluster集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了基于…

采用模块化设计的轮腿式六足机器人

原创作者:王菡琪1、前言 1.1 背景及意义 近两个世纪以来,人类生产技术水平不断飞跃,人口数量也大幅增长,这是人类史上不曾有的盛景,但是这也同时对我们提出了全新的挑战,于是我们研发了各类机器&#xff…

ECS简单介绍

ECS 云服务器ECS (Elastic Compute Service)是一种可弹性伸缩的计算服务,降低IT成本,提升运维效率,更专注于核心业务创新。 定位:最基础的计算服务,ECS及其上装载的操作系统,通常用作应用程序的运行环境。…

聚类--常见的K-MEANS聚类,DBSCAN聚类方法介绍

聚类 1. 什么是聚类⁉️ ➡️ 聚类就是把相似的物品分到一组。例如苹果,橙子属于水果类,猫,狗属于动物类,聚类把具有相似属性的物品分到同一组。 ☕常见的两种监督问题 有监督问题:有标签学习,通过已知…

过线检测判断方向

过线检测时需要判断目标是从哪个方向经过的 L1向量:(-1,-7) L2向量:(-5,0) 叉乘:L1 X L2 (-1x0 - (-5 x -7)) 0 - 35 -35 点乘:L1 L2 -1 x -5 -7 x 0…

管道设计软件:PIPEDATA-PRO

PIPEDATA-PROPipedata-Pro 提高了管道设计的效率,减轻了查找管道信息的负担。它可以直观、轻松地检索最新的管道和设计数据。尺寸和重量单位可以设置为公制或美国惯用单位。 Pipedata-Pro 于 1996 年由 Zeataline Projects 推出,现在已遍布全球&#xff…

靶机测试DomDom笔记

靶机描述Back to the TopHow well do you understand PHP programs? How familiar are you with Linux misconfigurations? This image will cover advanced Web attacks, out of the box thinking and the latest security vulnerabilities.Please note that this is captur…

阿里云中MindOpt优化器在python中如何安装

文章目录1 背景2 目的3 Bug4 安装教程6 小丑竟是我自己1 背景 我需要本地下载安装使用阿里元的MindOpt,安装教程可以看官网说明文档(方方面面都有,不过细节部分有点欠缺,可能会踩一些坑,但总体问题不大)。…

盘点 | CES2023落幕!新能源车、显示技术、AI/元宇宙、芯片…百花齐放百家争鸣中……

美国时间1月8日,全球规模最大、水平最高、影响力最广泛的国际消费电子展(CES 2023)在美国拉斯维加斯闭幕。这场堪比科技“春晚”的消费电子盛宴以“技术如何应对世界上最大的挑战”为主题,来自全球170多个国家与地区的3200余家科技…

OpenResty(Nginx+Redis+Lua)实现缓存限流

OpenResty介绍 OpenResty(又称:ngx_openresty) 是一个基于 nginx的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。 OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Ngin…

2013-2021年核心城市空气质量日度数据

2013-2021年核心城市空气质量日度数据 1、时间:2013年12月-2021年4月13日 2、城市包括:北京 上海 广州 深圳 杭州 天津 成都 南京 西安 武汉 3、指标:日期、AQI、范围、质量等级、PM2.5、PM10、SO2、CO、NO2、O3、城市 4、来源&#xff1…

MYSQL基础——DML语句

DML语句 DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据进行增(INSERT)、删(DELETE)、改(UPDATE)操作。 接下来代码演示所用的数据表如下: desc employee; 添加 添加数据语法格式如下: # 给指定字段添加…

IEEE | DSConv: Efficient Convolution Operator

论文标题 :DSConv: Efficient Convolution Operator 论文链接 :https://arxiv.org/abs/1901.01928v2 发表时间 :2019年11月 创新点 实现更低的内存使用,并且加快了计算速度 概要 引入了一种称为 DSConv(分布移位卷…

【服务器数据恢复】服务器卷被误删除的raid5数据恢复案例

服务器数据恢复环境&故障: 某品牌服务器,搭建raid5磁盘阵列。 用户误操作删除服务器上的卷。 经过检测发现服务器不存在物理故障,可以从raid5磁盘阵列层面进行数据恢复。 服务器数据恢复过程: 1、对故障服务器所有硬盘以只读…

Chromedriver安装教程【无需翻墙】

第一步 查看你当前Chrome浏览器的版本,如下图所示: 第二步 查看当前Chrome浏览器的版本号,如下图所示,版本 108.0.5359.125(正式版本) (64 位)中的,108就是我们的版本号。 第三…

第47讲:SQL优化之主键优化

文章目录1.主键优化方面的概念1.1.数据的组织方式1.2.主键顺序写入的过程1.3.主键乱序写入引发页分裂的现象1.4.页合并的概念2.主键的设计原则1.主键优化方面的概念 1.1.数据的组织方式 在InnoDB存储引擎中,表的数据都是根据主键顺序组织然后存放的,这…

集成开发工具IDEA导入新项目,update index时间过长

集成开发工具IDEA导入新项目,update index时间过长,一般这种场景出现在: 1.继承开发工具比较新(使用了优化的索引算法,这种算法一般是前期编译比较慢,一旦编译完,存入缓存,后期搜索就…

为何国家应该大力推行IPV9而不是IPv6.md

不得不说,中国的发展突飞猛进,你看连神舟16号都已经提升了日程。 我们见证了中国的崛起,更见证了中国的力量,集中力量办大事的决心。 当然计算机网络体系也发生了很大的改变,从之前的IPv4到20年前的IPv6的提出,再到现在的IPV9技术的商业实施。 为何IPv6提出了20多年了,普及还是…

11点还不睡会错过肝脏排毒吗?

人体脏器有排毒时间这个说法由来已久,肝经循行时间为晚上11点-1点,这让很多人害怕自己在11点还没睡就会错过肝脏排毒的时间。这个说法是真的吗?肝脏作为人体的“生物加工厂”,24小时都在工作。工作内容包括调节代谢、合成、调节免…