算法笔记\python 笔记: 相似性度量

news2024/11/24 7:39:29

1 欧氏距离

 

1.1 python实现:

from scipy.spatial import distance
distance.euclidean([1,2],[2,1])
#1.4142135623730951

1.2 标准化欧氏距离

先将数据标准化

 

(减去的均值两两抵消)

 2 曼哈顿距离

又称为城市街区距离

2.1 python 实现

from scipy.spatial import distance
distance.cityblock([1,2],[2,1])
#2

 3 切比雪夫距离

也称为棋盘距离,因为它是两个实值向量之间任意维度上的最大距离

 等价形式

3.1 python实现

from scipy.spatial import distance
distance.chebyshev([1,2],[2,1])
#1

 4 闵可夫斯基距离 minkowski

当p=1时,就是曼哈顿距离

当p=2时,就是欧氏距离

当p→∞时,就是切比雪夫距离

4.1 闵可夫斯基距离的缺点

  • 各个分量的量纲(scale),也就是“单位”当作相同的看待
  • 没有考虑各个分量的分布(期望,方差等)可能是不同的
    • eg,二维样本(身高,体重),有三个样本:a(180,50),b(190,50),c(180,60)。
      • 那么a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c之间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?

4.2 python实现

from scipy.spatial import distance
distance.minkowski([1,2],[2,1],4)
#1.189207115002721

5 马氏距离 Mahalanobis

  • 有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,
    • 其中样本向量X到μ的马氏距离
    • 其中向量Xi与Xj之间的马氏距离

  • ——>马氏距离和量纲无关,排除变量之间的相关性的干扰

6 夹角余弦

6.1 python实现

from scipy.spatial import distance
distance.cosine([1,2],[2,1])
#0.19999999999999996

 7 汉明距离

两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数

例如字符串“1111”与“1001”之间的汉明距离为2。

对向量按元素进行比较,并对差异的数量进行平均

如果两个向量相同,得到的距离是0之间,如果两个向量完全不同,得到的距离是1

from scipy.spatial import distance
distance.hamming([1,2],[2,1])
# 1 
# 第一个元素和第二个元素都不同,所以汉明距离为(1+1)/2=1


distance.hamming([1,2],[1,1])
#0.5
#(1+0)/2=0.5

8 杰卡德距离 Jaccard

8.1 杰卡德相似系数

8.2 杰卡德距离

8.2.1 python 实现

from scipy.spatial import distance
distance.jaccard([1,2],[2,1])
#1


distance.jaccard([1,1],[2,1])
#0.5

9 相关距离

9.1 相关系数

  •  相关系数的取值范围是[-1,1]。
    • 相关系数的绝对值越大,则表明X与Y相关度越高。
    • 当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)

9.2 相关距离

10 半正矢距离 haversine

  • 球面上两点之间的最短距离
    • 常用于导航
    • 经度、纬度和曲率对计算都有影响

10.1 python 实现

from sklearn.metrics.pairwise import haversine_distances
haversine_distances([[1,2],[2,1]])
'''
array([[0.        , 0.87152123],
       [0.87152123, 0.        ]])
'''

 参考内容:机器学习中的相似性度量总结 (qq.com)

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

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

相关文章

C++图形开发(16):绘制一个圆环和一根针

文章目录 绘制一个圆环和一根针1.1 绘制1.2 line()函数1.3 circle()函数1.4 setlinestyle()函数1.5 setlinecolor()函数 接下来,我会继续制作一些小游戏,但因为整个难度的上升(毕竟我也是初学者),可能文章不会再像之前…

吐血整理,性能测试-Jmeter分布式压测实战(超细详解)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Jmeter的集群模式…

InsCode Stable Diffusion使用教程【InsCode Stable Diffusion美图活动一期】

记录一下如何使用 InsCode Stable Diffusion 进行 AI 绘图以及使用感受。 一、背景介绍 目前市面上比较权威,并能用于工作中的 AI 绘画软件其实就两款。一个叫 Midjourney(简称 MJ),另一个叫 Stable Diffusion(简称 …

Unity游戏源码分享-Unity经营类美食小摊小游戏

Unity经营类美食小摊小游戏 挺有意思的小游戏 关卡页面 游戏主页面 有顾客上门 需要给顾客搭配他们想要的美食 会不断地有顾客过来,这个时候就考验手速的时候了,真实模拟经营 服务到位立马有钱 项目地址: https://download.csdn.net/downl…

VisualStudio2022将printf信息打印到控制台

点击“解决方案管理器”,选中项目名称,点击鼠标右键---->属性---->生成事件---->生成后事件,在命令行的右侧输入框里填写如下内容: editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\$(ProjectName).exe接下来在编译运行时&#x…

数据库--->MySQL(2)【事务、SQL优化】

文章目录 事务什么是事务?隔离性中的不同隔离级别事务实现的原理隔离级别的实现原理(MVCC)MySQL中的锁机制 SQL优化 事务 什么是事务? 事务就是逻辑上的一组操作,在同一个事务中,如果有多条sql语句执行&am…

一文详解新一代高效前端构建工具VITE-达观数据

Vite 是一个快速、简单且高效的前端构建工具,它的出现为前端开发者带来了新的构建体验。在本文中,我们将探讨 Vite 的技术原理、优点和使用方法。 Vite 的技术原理 Vite 的核心技术是基于 ES Modules 和浏览器原生模块系统的构建工具。Vite 的构建过程是…

多态的基本使用

这部分的内容主要是记住使用方法,原理在之后会讲。 多态的概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 比如说买票,普通人买票就是正常买&…

WTM框架页面被其他网站引用免登录

用ASP.NET CORE开发通常都会有这样一个需求,自己框架开发的页面,要被其他网站嵌套引用,但其他网站通过链接到自己的开发页面的时候,通常会有一个登录页面,有的时候网站无缝集成的时候,这就会要求跳过这个WT…

前端实现 DIV 高度只有100px,宽度只有100px ,我要在这个DIV放一个宽度200的DIV,左右拉动滚动条显示

<!DOCTYPE html> <html> <head><title>点击监听两组span标签</title><style>.outer-div {width: 100px;height: 100px;overflow-x: scroll;background-color: #abc1ee;}.inner-div {width: 200px;}/* 自定义滚动条样式 */.outer-div::-web…

Java 的集合

一、Collection 1、ArrayList 底层采用数组实现&#xff0c;操作大多基于对数组的操作。 在添加和删除时需要做 System.arraycopy(native层方法) 拷贝工作。 添加元素时可能会扩容&#xff0c;这要大量的拷贝工作&#xff0c;删除元素时&#xff0c;会把后面的元素向前拷贝。…

剑指oferr68-II.二叉树的最近公共祖先

为什么这道题的难度是easy&#xff0c;我感觉挺难的啊&#xff0c;我想了挺久没有一点思路就直接看题解了。题解有两种解法&#xff0c;先看第一种存储父节点 class Solution {Map<Integer,TreeNode> parent new HashMap<Integer,TreeNode>();Set<Integer>…

ffmpeg2段视频合成一段

查看分辨率 帧率和编码器 ffprobe -v error -select_streams v:0 -show_entries streamcodec_name,width,height,avg_frame_rate -of defaultnoprint_wrappers1 rs2.mp4得到&#xff0c;编码器&#xff0c;分辨率&#xff0c;还有帧率 codec_nameh264 width1920 height1080 avg…

小白到运维工程师自学之路 第五十二集 (三剑客之awk)

一、概述 awk命令是一种在Unix或类Unix系统上使用的文本处理工具。它以行为单位读取输入文件&#xff0c;按照预定义规则对每一行进行处理并生成输出。 通过使用一种简单的编程语言&#xff0c;awk提供了对文本数据进行过滤、处理和转换的强大能力。它可以轻松地提取文本中的…

实验四 交换机 VLAN 配置

文章目录 实验目的实验原理实验内容实验总结 实验目的 理解 VLAN 的概念、原理&#xff1b;掌握基于交换机端口的 VLAN 划分方法&#xff1b;掌握 Cisco2950 交换机的单交换机和跨交换机 VLAN 配置方法。 实验原理 &#xff08;1&#xff09;VLAN 的概念 VLAN&#xff08;Vi…

CQ 社区版 2.2.0 发布 | 配置要求降为 4 核 16G!!!

&#x1f389;&#x1f389;&#x1f389; 喜大普奔&#xff01;&#xff01;&#xff01; 经过我们研发团队的不断努力&#xff0c;CloudQuery 终于「瘦身」成功啦&#xff01;&#xff01;&#xff01; 本次发布的 v2.2.0 版本&#xff0c;推荐配置降为&#xff1a; CPU&a…

【iOS内存管理-内存的几大区域】

前言 iOS内存管理的第一篇章&#xff0c;了解iOS内存的五大分区。 总览 iOS中&#xff0c;内存主要分为五大区域&#xff1a;栈区&#xff0c;堆区&#xff0c;全局区/静态区&#xff0c;常量区和代码区。总览图如下。 如上图所示&#xff0c;代码区是在低地址段存放&#x…

关于AWS MSK Connector Execution Role的解释

尽管在创建AWS MSK Connector时&#xff0c;Execution Role是一个必填项&#xff0c;就像下面这样&#xff1a; 并且在官方文档中给出的Execution Role样例&#xff1a; https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-service-execution-role.html 中也…

基于JSP+Servlet的学生信息管理系统

用户类型&#xff1a;三角色&#xff08;学生、教师、管理员&#xff09; 项目架构&#xff1a;B/S架构 设计思想&#xff1a;MVC 开发语言&#xff1a;Java语言 前端技术&#xff1a;Layui、HTML、CSS、JS、JQuery、Ajax等技术 后端技术&#xff1a;JSP、Servlet、JDBC、…

基于JSP+Servlet的医药药品管理系统

用户类型&#xff1a;双角色角色&#xff08;患者、管理员[医生]&#xff09; 设计模式&#xff1a;MVC&#xff08;jspservletjavabean) 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 主要技术&#xff1a;jsp、servlet、jdbc、jsp、html5、jquery、css、js…