scipy 笔记:scipy.spatial.distance

1 pdist

计算n维空间中观测点之间的成对距离。

scipy.spatial.distance.pdist(X, metric='euclidean', *, out=None, **kwargs)

1.1 主要参数

X一个m行n列的数组,表示n维空间中的m个原始观测点
metric使用的距离度量
out输出数组。如果非空,压缩的距离矩阵Y将存储在此数组中

1.2 举例

import numpy as np
from scipy.spatial.distance import pdistx = np.array([[2, 0, 2], [2, 2, 3], [-2, 4, 5], [0, 1, 9], [2, 2, 4]])
#5个元素,每个元素3维pdist(x)
#array([2.23606798, 6.40312424, 7.34846923, 2.82842712, 4.89897949,6.40312424, 1.        , 5.38516481, 4.58257569, 5.47722558])
'''
10个元素,分别表示:第1个点和第2个点之间的距离
第1个点和第3个点之间的距离
第1个点和第4个点之间的距离
第1个点和第5个点之间的距离
第2个点和第3个点之间的距离
第2个点和第4个点之间的距离
第2个点和第5个点之间的距离
第3个点和第4个点之间的距离
第3个点和第5个点之间的距离
第4个点和第5个点之间的距离
'''

2 cdist

计算两个输入集合中每对元素之间的距离

scipy.spatial.distance.cdist(XA, XB, metric='euclidean', *, out=None, **kwargs)

2.1 主要参数

XAmA*n的矩阵,表示mA个元素,每个元素n维特征
XBmBn的矩阵,表示mB个元素,每个元素n维特征
metric使用的距离度量
out输出数组(mA*mB)。如果非空,压缩的距离矩阵Y将存储在此数组中

2.2 举例

import numpy as np
from scipy.spatial.distance import cdistx = np.array([[2, 0, 2], [2, 2, 3], [-2, 4, 5], [0, 1, 9], [2, 2, 4]])cdist(x,x)
'''
array([[0.        , 2.23606798, 6.40312424, 7.34846923, 2.82842712],[2.23606798, 0.        , 4.89897949, 6.40312424, 1.        ],[6.40312424, 4.89897949, 0.        , 5.38516481, 4.58257569],[7.34846923, 6.40312424, 5.38516481, 0.        , 5.47722558],[2.82842712, 1.        , 4.58257569, 5.47722558, 0.        ]])
'''y=[[1,2,3]]
cdist(x,y)
'''
array([[2.44948974],[1.        ],[4.12310563],[6.164414  ],[1.41421356]])
'''cdist(y,x)
'''
array([[2.44948974, 1.        , 4.12310563, 6.164414  , 1.41421356]])
'''

3 squareform

将距离向量的向量形式转换为方阵形式的距离矩阵,反之亦然。

scipy.spatial.distance.squareform(X, force='no', checks=True)

3.1 举例

import numpy as np
from scipy.spatial.distance import *x = np.array([[2, 0, 2], [2, 2, 3], [-2, 4, 5], [0, 1, 9], [2, 2, 4]])dist_vec=pdist(x)
dist_vec
'''
array([2.23606798, 6.40312424, 7.34846923, 2.82842712, 4.89897949,6.40312424, 1.        , 5.38516481, 4.58257569, 5.47722558])
'''dist_mat=squareform(dist_vec)
dist_mat
'''
array([[0.        , 2.23606798, 6.40312424, 7.34846923, 2.82842712],[2.23606798, 0.        , 4.89897949, 6.40312424, 1.        ],[6.40312424, 4.89897949, 0.        , 5.38516481, 4.58257569],[7.34846923, 6.40312424, 5.38516481, 0.        , 5.47722558],[2.82842712, 1.        , 4.58257569, 5.47722558, 0.        ]])
'''squareform(dist_mat)
'''
array([2.23606798, 6.40312424, 7.34846923, 2.82842712, 4.89897949,6.40312424, 1.        , 5.38516481, 4.58257569, 5.47722558])
'''

4 directed_hausdorff

  • 计算两个二维数组之间的定向豪斯多夫距离
  • 通常用于衡量两个点集合的相似性
scipy.spatial.distance.directed_hausdorff(u, v, seed=0)

数学笔记/scipy 笔记:豪斯多夫距离(Hausdorff )_python 豪斯多夫距离-CSDN博客

4.1 主要参数

u

(M,N)大小的数组

M 表示点的数量,N 表示每个点的维度

v

(O,N)大小的数组

O 表示点的数量,N 表示每个点的维度

4.2 返回内容

duv 之间的定向豪斯多夫距离
index_1 在数组u中贡献豪斯多夫对的点的索引
index_2在数组v中贡献豪斯多夫对的点的索引

4.3 举例

import numpy as np
from scipy.spatial.distance import *u = np.array([(1.0, 0.0),(0.0, 1.0),(-1.0, 0.0),(0.0, -1.0)])
v = np.array([(2.0, 0.0),(0.0, 2.0),(-2.0, 0.0),(0.0, -4.0)])directed_hausdorff(u,v)
#(2.23606797749979, 3, 0)

5 is_valid_dm

判断输入数组是否为有效的距离矩阵

scipy.spatial.distance.is_valid_dm(D, tol=0.0, throw=False, name='D', warning=False)

5.1 主要参数

D用于测试有效性的候选对象
tol距离矩阵应该是对称的。tol是条目ij和ji之间的最大差异,以便将距离度量视为对称

5.2 举例

import numpy as np
from scipy.spatial.distance import *d = np.array([[0.0, 1.1, 1.2, 1.3],[1.1, 0.0, 1.0, 1.4],[1.2, 1.0, 0.0, 1.5],[1.3, 1.4, 1.5, 0.0]])
is_valid_dm(d)
#Trueis_valid_dm([[0, 2, 2], [2, 0, 2]])
#形状不对is_valid_dm([[0, 1, 1], [1, 2, 3], [1, 3, 0]])
#对角线不为0is_valid_dm([[0, 1, 3], [2, 0, 1], [3, 1, 0]])
#不对称

6 is_valid_y

scipy.spatial.distance.is_valid_y(y, warning=False, throw=False, name=None)

判断输入数组是否为有效的压缩距离矩阵。

压缩距离矩阵必须是1维的numpy数组。它们的长度必须是一些正整数n的二项系数C_n^2

6.1 主要参数

y压缩距离矩阵

6.2 举例

import numpy as np
from scipy.spatial.distance import *is_valid_y([1.0, 1.2, 1.0, 0.5, 1.3, 0.9])
#True
#长度为6,合理长度,所以返回Trueis_valid_y([1.0, 1.2, 1.0, 0.5, 1.3, 0.9,1.5])
#False
#长度为7,不合理长度,所以返回False

7 两个数字向量之间的距离

7.1 braycurtis

计算两个一维数组之间的布雷-柯蒂斯距离

scipy.spatial.distance.braycurtis(u, v, w=None)

7.1.1 主要参数

u

(N,)    输入数组

v(N,)    输入数组
w(N,)    u和v中每个值的权重

7.1.2 举例

基本上后面都是一样的,就不举例了

import numpy as np
from scipy.spatial.distance import *braycurtis([1,1,0],[0,1,0])#0.3333333333333333

7.2 canberra

scipy.spatial.distance.canberra(u, v, w=None)

7.3 chebyshev

scipy.spatial.distance.chebyshev(u, v, w=None)

7.4 cityblock

曼哈顿距离

scipy.spatial.distance.cityblock(u, v, w=None)

7.5 correlation

scipy.spatial.distance.correlation(u, v, w=None, centered=True)

7.6 cosine

scipy.spatial.distance.cosine(u, v, w=None)

7.7 euclidean

scipy.spatial.distance.euclidean(u, v, w=None)

7.8 jensenshannon

scipy.spatial.distance.jensenshannon(p, q, base=None, *, axis=0, keepdims=False)

两个概率向量p,q之间的JS距离

如果p和q的总和不为1.0,该程序将对其进行归一化

7.8.1 主要参数

p左侧概率向量
q右侧概率向量
base用于计算输出的对数底数
axis

沿着哪个轴计算JS距离

7.8.2 举例

import numpy as np
from scipy.spatial.distance import *jensenshannon([1.0, 0.0, 0.0], [0.0, 1.0, 0.0])
#0.8325546111576977jensenshannon([1.0, 0.0, 0.0], [0.0, 1.0, 0.0],2)
#1.0a = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]])
b = np.array([[13, 14, 15, 16],[17, 18, 19, 20],[21, 22, 23, 24]])
jensenshannon(a, b, axis=0)
#array([0.19542878, 0.14476971, 0.11383771, 0.09276358])jensenshannon(a, b, axis=1)
#array([0.14023394, 0.03991063, 0.02018153])

7.9 mahalanobis

马氏距离

scipy.spatial.distance.mahalanobis(u, v, VI)

7.9.1 主要参数

u输入向量
v输入向量
VI协方差矩阵的逆,也即上面公式中的V^{-1}

7.9.2 举例

import numpy as np
from scipy.spatial.distance import *iv = [[1, 0.5, 0.5], [0.5, 1, 0.5], [0.5, 0.5, 1]]mahalanobis([1, 0, 0], [0, 1, 0], iv)
#1.0

7.10 minkowski

闵可夫斯基距离

scipy.spatial.distance.minkowski(u, v, p=2, w=None)

7.11 seuclidean 

标准欧氏距离

scipy.spatial.distance.seuclidean(u, v, V)

V[i]是针对点集中所有第i个分量计算得到的方差

7.12 sqeuclidean

平方欧氏距离

scipy.spatial.distance.sqeuclidean(u, v, w=None)

8 两个布尔向量距离

8.1 dice

scipy.spatial.distance.dice(u, v, w=None)

CTF表示u是T,v是F,其他类似

8.2 hamming

scipy.spatial.distance.hamming(u, v, w=None)

8.3 jaccard

scipy.spatial.distance.jaccard(u, v, w=None)

8.4 kulczynski1

scipy.spatial.distance.kulczynski1(u, v, *, w=None)

8.5 rogerstanimoto

scipy.spatial.distance.rogerstanimoto(u, v, w=None)

8.6 russellrao

8.7 sokalmichener

scipy.spatial.distance.sokalmichener(u, v, w=None)

8.8 sokalsneath

scipy.spatial.distance.sokalsneath(u, v, w=None)

8.9 yule

scipy.spatial.distance.yule(u, v, w=None)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mindomo Desktop for Mac免费思维导图软件,助您高效整理思维

思维导图是一种强大的工具,可以帮助我们整理思维、提高记忆力、激发创造力。而Mindomo Desktop for Mac作为一款免费的思维导图软件,能够帮助我们更高效地进行思维整理和项目管理。在本文中,我们将介绍Mindomo Desktop for Mac的功能和优势&a…

C++ day41 动态规划 整数拆分 不同的二叉搜索树

题目1:343 整数拆分 题目链接:整数拆分 对题目的理解 将正整数n,拆分成k个正整数的和(k>2)使得这些整数的乘积最大化,返回最大乘积 动规五部曲 1)dp数组的含义以及其下标i的含义 dp[i]…

Linux shell编程学习笔记31:alias 和 unalias 操作 命令别名

目录 0 前言1 定义别名2 查看别名 2.1 查看所有别名2.2 查看某个别名 2.2.1 alias 别名2.2.2 alias | grep 别名字符串2.2.3 使用 CtrlAltE 组合键3 unalias:删除别名4 如何执行命令本身而非别名 4.1 方法1:使用 CtrlAltE 组合键 && unalias4…

主机的具体权限规划:ACL的使用

目的:针对某一用户或某一组来设置特定权限需求,针对上,接着设置 ACL可以针对单一用户,文件,或者目录来进行rwx的权限设置,对于需要特殊权限的设置非常有帮助。 第一,查看文件系统是否支持&…

YOLOv5算法进阶改进(5)— 主干网络中引入SCConv | 即插即用的空间和通道维度重构卷积

前言:Hello大家好,我是小哥谈。SCConv是一种用于减少特征冗余的卷积神经网络模块。相对于其他流行的SOTA方法,SCConv可以以更低的计算成本获得更高的准确率。它通过在空间和通道维度上进行重构,从而减少了特征图中的冗余信息。这种模块的设计可以提高卷积神经网络的性能。�…

【开源】基于JAVA的森林火灾预警系统

项目编号: S 019 ,文末获取源码。 \color{red}{项目编号:S019,文末获取源码。} 项目编号:S019,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 系统基础模块2.3 烟…

前五年—中国十大科技进展新闻(2012年—2017年)

前五年—中国十大科技进展新闻(2012-2017) 2017年中国十大科技进展新闻1. 我国科学家利用化学物质合成完整活性染色体2. 国产水下滑翔机下潜6329米刷新世界纪录3. 世界首台超越早期经典计算机的光量子计算机诞生4. 国产大型客机C919首飞5. 我国首次海域天…

02【SpringBoot静态处理、错误处理】

目录 一、SpringBoot的WEB开发 1.1 静态资源的处理 1.1.1 静态资源目录 1)SpringBoot静态资源处理 2)关于静态资源处理的配置 3)欢迎页面的处理 4)修改SpringBoot资源访问路径 1.1.2 WebJars资源 1.2 注册Servlet三大组件…

java学习part17final

110-面向对象(高级)-关键字final的使用及真题_哔哩哔哩_bilibili 1.概念 tips:java里有const关键字,但是用于保留字,不会使用,目前没有意义。 final变量没有默认赋值,只能在以下三个地方赋值,且只能赋值一…

03、K-means聚类实现步骤与基于K-means聚类的图像压缩(1)

03、K-means聚类实现步骤与基于K-means聚类的图像压缩(1) 03、K-means聚类实现步骤与基于K-means聚类的图像压缩(1) 03、K-means聚类实现步骤与基于K-means聚类的图像压缩(2) 开始学习机器学习啦&#xf…

【数据库】基于排序算法的去重,集合与包的并,差,交,连接操作实现原理,执行代价以及优化

基于两趟排序的其它操作 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏…

【Android】Android Framework系列--Launcher3各启动场景源码分析

Android Framework系列–Launcher3各启动场景源码分析 Launcher3启动场景 Launcher3是Android系统提供的默认桌面应用(Launcher),它的源码路径在“packages/apps/Launcher3/”。 Launcher3的启动场景主要包括: 开机后启动:开机时&#xff…

【开源】基于JAVA的开放实验室管理系统

项目编号: S 013 ,文末获取源码。 \color{red}{项目编号:S013,文末获取源码。} 项目编号:S013,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实…

Java网络爬虫实战

List item 文章目录 ⭐️写在前面的话⭐️📌What is it?分类网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫(General Purpose Web Crawler)、聚焦网络爬虫(Focused Web Crawler&a…

计算机丢失vcomp140.dll是什么意思,如何解决与修复(附教程)

vcomp140.dll缺失的5种解决方法以及vcomp140.dll缺失原因 引言: 在日常使用电脑的过程中,我们可能会遇到一些错误提示,其中之一就是“vcomp140.dll缺失”。这个错误提示通常出现在运行某些程序或游戏时,给使用者带来了困扰。本文…

github访问失败

1. 问题场景 今天了解到notepad可以安装许多插件,但是自动下载插件时总是失败,这些插件的下载源都是github,将地址复制到浏览器也打不开,所以查了下github的访问问题,目前插件已正常下载。 2. 解决方法 gitee上搜索…

大数据数据仓库,Sqoop--学习笔记

数据仓库介绍 1. 数据仓库概念 数据仓库概念创始人在《建立数据仓库》一书中对数据仓库的定义是:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、数据集成的(Integrated)、相对…

【MATLAB源码-第86期】基于matlab的QC-LDPC码性能仿真,输出误码率曲线。

操作环境: MATLAB 2022a 1、算法描述 QC-LDPC(准循环低密度奇偶校验)编码是一种高效的错误校正编码方式,广泛应用于通信系统和数据存储中以提高数据的可靠性。它是低密度奇偶校验(LDPC)编码的一种特殊形…

Zookeeper分布式锁实现Curator十一问

前面我们通过Redis分布式锁实现Redisson 15问文章剖析了Redisson的源码,理清了Redisson是如何实现的分布式锁和一些其它的特性。这篇文章就来接着剖析Zookeeper分布式锁的实现框架Curator的源码,看看Curator是如何实现Zookeeper分布式锁的,以…

wpf使用CefSharp.OffScreen模拟网页登录,并获取身份cookie,C#后台执行js

目录 框架信息:MainWindow.xamlMainWindow.xaml.cs爬取逻辑模拟登录拦截请求Cookie获取 CookieVisitorHandle完整代码参考项目 框架信息: CefSharp.OffScreen.NETCore 109.1.110 .NET 7 CefSharp.OffScreen.NETCore v114.2.100 第一版使用这个&#x…