Scipy 学习第3篇:数字向量的距离计算
计算两个数字向量u和v之间的距离函数
1,欧氏距离(Euclidean distance)
在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离。使用这个距离,欧氏空间成为度量空间。计算公式为
二维空间中的欧氏距离:

三维空间中的欧式距离:

n维空间中的欧式距离:

x = [1, 0, 0]
y = [0, 1, 0]
dis = distance.euclidean(x, y)
2,曼哈顿距离(Manhattan/cityblock distance)
曼哈顿距离(Manhattan Distance)用以标明两个点在标准坐标系上的绝对轴距总和。曼哈顿距离的命名原因是从规划为方型建筑区块的城市(如曼哈顿)间,最短的行车路径而来(忽略曼哈顿的单向车道以及只存在于3、14大道的斜向车道)。任何往东三区块、往北六区块的的路径一定最少要走九区块,没有其他捷径。计算公式为:

如下图所示,红色表示曼哈顿距离,蓝色和黄色代表等价的曼哈顿距离。

x = [5, 3, 9]
y = [0, 1, 6]
dis = distance.cityblock(x, y)
3,坎贝拉距离(Canberra distance)
Canberra 距离是用来衡量两个向量空间的居间,是Manhattan 距离的加权版本,Canberra 距离已被用作比较排名列表和计算机安全中的入侵检测的测量。

x = [1, 2, 0]
y = [0, 1, 0]
dis = distance.canberra(x, y)
4,切比雪夫距离(Chebyshev distance)
切比雪夫距离(Chebyshev distance)是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。以数学的观点来看,切比雪夫距离是由一致范数(uniform norm)(或称为上确界范数)所衍生的度量,也是超凸度量(injective metric space)的一种。计算公式为

x = [5, 3, 9]
y = [0, 1, 6]
dis = distance.chebyshev(x, y)
5,相关系数距离(Correlation distance)
相关系数距离是1与相关系数的差,相关系数的定义为

常见的Pearson相关性系数即为

Pearson相关距离为

x = [5, 3, 9]
y = [0, 1, 6]
dis = distance.correlation(x, y)
6,余弦相似度距离(Cosine distance)
余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为0到1之间。
余弦相似度定义来自于欧几里得点积,点积定义如下

余弦相似度为:

余弦相似度距离为1与余弦相似度的差

x = [5, 3, 9]
y = [0, 1, 6]
dis = distance.cosine(x, y)
8,闵可夫斯基距离(Minkowski distance)
闵氏距离不是一种距离,而是一组距离的定义,将以下形式的距离都定义为Minkowski distance。
或 
当 时,就是曼哈顿距离 当
时,就是欧氏距离 当
时,就是切比雪夫距离
x = [2, 0, 0]
y = [0, 1, 0]
dis = distance.minkowski(x, y, 2)
9,标准欧式距离(standardized Euclidean distance)
标准化欧氏距离是针对简单欧氏距离的缺点(量纲差异)而作的一种改进方案,标准化方法为

变换后标准欧式距离为

x = [1, 0, 0]
y = [0, 1, 0]
s = [0.1, 0.1, 0.1]
dis = distance.seuclidean(x, y, s)
10,平方欧式距离(squared Euclidean distance)
平方欧式距离是简单欧式距离每一项的平方,公式如下

x = [1, 0, 0]
y = [0, 1, 0]
dis = distance.sqeuclidean(x, y)
11,加权闵可夫斯基距离(Minkowski distance)

x = [1, 0, 0]
y = [0, 1, 0]
dis = distance.wminkowski(x, y, 2, np.ones(3))
12,Bray-Curtis 相异度
Bray-Curtis 相异度(Bray-Curtis dissimilarity)是生态学中用来衡量不同样地物种组成差异的测度,计算公式为:

x = [1, 2, 0]
y = [0, 1, 0]
dis = distance.braycurtis(x, y)
参考文档:
Scipy 学习第3篇:数字向量的距离计算的更多相关文章
- 【Python学习】指定两点地理位置经纬度的距离计算
指定两点地理位置经纬度的距离计算 #coding=utf-8 from math import * # input Lat_A 纬度A # input Lng_A 经度A # input Lat_B ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- Python3学习(1)-基础篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...
- 学习KnockOut第二篇之Counter
学习KnockOut第二篇之Counter 欲看此 ...
- PHP学习笔记 - 进阶篇(11)
PHP学习笔记 - 进阶篇(11) 数据库操作 PHP支持哪些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Syba ...
- PHP学习笔记 - 进阶篇(10)
PHP学习笔记 - 进阶篇(10) 异常处理 抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出之后,后面的代码将不会再被 ...
- PHP学习笔记 - 进阶篇(8)
PHP学习笔记 - 进阶篇(8) 日期与时间 取得当前的Unix时间戳 UNIX 时间戳(英文叫做:timestamp)是 PHP 中关于时间与日期的一个很重要的概念,它表示从 1970年1月1日 0 ...
- PHP学习笔记 - 进阶篇(4)
PHP学习笔记 - 进阶篇(4) 字符串操作 字符串介绍 PHP开发中,我们遇到最多的可能就是字符串. 字符串变量用于包含字符串的值. 一个字符串 通过下面的3种方法来定义: 1.单引号 2.双引号 ...
- PHP学习笔记 - 进阶篇(5)
PHP学习笔记 - 进阶篇(5) 正则表达式 什么叫正则表达式 正则表达式是对字符串进行操作的一种逻辑公式,就是用一些特定的字符组合成一个规则字符串,称之为正则匹配模式. $p = '/apple/' ...
随机推荐
- Ribbon自定义负载均衡策略,在网关实现类似Ip_hash的负载均衡,ribbon给单个服务配置属性
背景: 我需要在网关实现一种功能,某个用户的请求永远打在后台指定的服务,也就是根据ip地址进行负载均衡 原理: 在ribbon的配置类下: 那我们自己创建一个IRule的实现类,模仿ZoneAvoid ...
- Python练习题 016:猴子吃桃
[Python练习题 016] 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到 ...
- 记录从Winserver2012R2升级到Winserver2019
升级系统是必不可少的,最近想搞虚拟化Hyper-V:于是着手需要装一台WIN server 2019. 手头有一台Winserver 2012R2,正好拿来测试升级,此博做一个记录. 操作流程:在升级 ...
- mysql插入数据报 (Incorrect string value: '\xB6\xFE' for column 'name' at row 1)
这是我的表结构 mysql> describe students; +--------+---------------------+------+-----+---------+-------- ...
- C++里的程序 GetDlgItem(IDC_EDIT_INPUTFILE) ->EnableWindow(TRUE)
转载:https://zhidao.baidu.com/question/654519209423407765.html GetDlgItem(IDC_EDIT_INPUTFILE) ->Ena ...
- 加快ASP。NET Core WEB API应用程序。第3部分
下载source from GitHub 对ASP进行深度重构和优化.NET Core WEB API应用程序代码 介绍 第1部分.创建一个测试的RESTful WEB API应用程序. 第2部分.增 ...
- package.json文件配置说明
1.什么是package.json package.json文件是Node.js项目中的一个描述文件,执行npm init命令初始化项目后,在项目的根目录下自动生成该文件.package.json包含 ...
- sop服务治理
一,为什么需要服务治理: 我们最先接触的单体架构, 整个系统就只有一个工程, 打包往往是打成了 war 包, 然后部署到单一 tomcat 上面, 这种就是单体架构, 如图: 假如系统按照功能划分了, ...
- day37 Pyhton 网络编程04
# tcp协议和udp协议的选择问题 # tcp # 大量的连续的数据 传递文件\发送邮件 # 文件的传递 # 下载电影 # udp # 短消息类 社交软件 # qq 微信 # 在线播放视频 快会丢帧 ...
- docker-搭建单机 kafka+zookeeper
1 zookeeper docker run --name zookeeper -p 12181:2181 -d wurstmeister/zookeeper:latest 2 kafka ...