汉明距离、汉明损失详解及代码(python)

article/2025/9/20 5:26:03

文章目录

    • 引言
    • 汉明距离(Hamming distance)
      • 代码示例
    • 汉明损失(Hamming loss)
      • 代码示例
    • 参考链接

引言

汉明距离是机器学习中的常用度量。本文整理了具体的图示+代码,帮你形象化理解汉明距离(Hamming distance)、汉明损失(Hamming loss)。

汉明距离(Hamming distance)

定义:两个等长的符号串之间的汉明距离是对应符号不同位置个数

汉明距离是用于测量两个序列之间的编辑距离的几个字符串度量之一。它以美国数学家理查德·海明命名。

在这里插入图片描述
比如例子中第一行,符号不同的位置是"rol"和"thr",即符号不同位置有3个,汉明距离为3。

代码示例

用python计算两个字符串之间的汉明距离:

# 写法一:
def hamming_distance(string1, string2):dist_counter = 0for n in range(len(string1)):if string1[n] != string2[n]:dist_counter += 1return dist_counter# 写法二:或者采用更短的表达式
sum(xi != yi for xi, yi in zip(x, y))

汉明损失(Hamming loss)

汉明损失是错误预测的标签比例,用于度量两个样本之间的汉明距离。

L H a m m i n g ( y , y ^ ) = 1 n labels ∑ j = 0 n labels − 1 1 ( y ^ j ≠ y j ) L_{Hamming}(y, \hat{y}) = \frac{1}{n_\text{labels}} \sum_{j=0}^{n_\text{labels} - 1} 1(\hat{y}_j \not= y_j) LHamming(y,y^)=nlabels1j=0nlabels11(y^j=yj)

从公式可以看出,汉明损失即在前一节的汉明距离基础上进行归一化,得到一个在0~1区间的损失值。

代码示例

调用 sklearn.metrics 中的 hamming_loss 进行计算:

sklearn.metrics.hamming_loss(y_true, y_pred, *, sample_weight=None)

>>> from sklearn.metrics import hamming_loss
>>> y_pred = [1, 2, 3, 4]
>>> y_true = [2, 2, 3, 4]
>>> hamming_loss(y_true, y_pred)
0.25

y_true, y_pred只有第一个位置不同,1/4=0.25。

如果评估的是多分类情况:

>>> import numpy as np
>>> hamming_loss(np.array([[0, 1], [1, 1]]), np.zeros((2, 2)))
0.75

需要注意的是:

多分类问题中,当normalize参数设置为True时,汉明损失对应于y_true和y_pred之间的汉明距离,相当于0-1损失 (zero one loss),是一种精确匹配(exact match)。 0-1损失认为:如果给定样本中的所有数值不完全匹配真实的标签,则认为这个样本不正确。例如下图,有三个样本不完全匹配,就是3/5=0.6。

在这里插入图片描述

多标签问题中,汉明损失不同于0-1损失。在多标签问题中,汉明损失更宽容,因为它只惩罚个别标签。比如下图中,有三个样本中的4个字符位置不同,就是4/(4*5)=0.2。
在这里插入图片描述
通过这两个图可以看出,多标签问题的汉明损失会比0/1损失更宽松(0.2<0.6),惩罚力度更小。

参考链接

ACM Multi-label Classification Tutorial
https://en.wikipedia.org/wiki/Hamming_distance
https://scikit-learn.org/stable/modules/model_evaluation.html#hamming-loss
http://www.manongjc.com/detail/30-emspeytwauwwdai.html


http://chatgpt.dhexx.cn/article/8D8cXDyR.shtml

相关文章

汉明距离的计算

汉明距离&#xff0c;作为一种衡量特征距离的计算方法&#xff0c;在很多场合都有应用&#xff0c;其主要思想是找到两个特征之间的差异大小&#xff0c;也可以说是相似性。 我是在图像处理中用到的&#xff0c;项目中需要计算图像梯度方向&#xff0c;我选择了四个方向&#…

汉明距离问题详解

https://leetcode.cn/problems/hamming-distance/solution/yi-ming-ju-chi-by-leetcode-solution-u1w7/ 前言 汉明距离广泛应用于多个领域。在编码理论中用于错误检测&#xff0c;在信息论中量化字符串之间的差异。 两个整数之间的汉明距离是对应位置上数字不同的位数。 根据…

介绍汉明距离及计算示例

汉明距离(Hamming distance)是计算两个向量之间不同对应元素数量之和。本文介绍R、Python语言的计算过程。 汉明距离概述 汉明距离是以美国数学家理查德汉明的名字命名的&#xff0c;他在1950年关于汉明码的论文中提出了该举例度量指标。它被广泛用于多个学科&#xff0c;如信…

汉明距离讲解

文章目录 汉明距离的计算最小汉明距离汉明距离纠错例题 汉明距离的计算 码字A为 10001001 码字B为 10110001 那么不同的字符数为3&#xff0c;汉明距离就是3 不难看出&#xff0c;汉明距离就是两个码不同的数的个数。 最小汉明距离 在一个码组集合中&#xff0c;任意两个码…

距离度量 —— 汉明距离(Hamming Distance)

Python学习系列文章&#xff1a;&#x1f449; 目录 &#x1f448; 文章目录 一、概述二、计算方式三、汉明重量 一、概述 汉明距离&#xff08;Hamming Distance&#xff09;&#xff0c;就是将一个字符串变成另一个字符串所需要的替换次数。 二、计算方式 举个例子&#…

【猿知识】汉明距离(Hamming Distance)

文章目录 汉明距离汉明重量汉明距离计算汉明距离应用例子参考 汉明距离是以理查德卫斯里汉明的名字命名的&#xff0c;汉明在误差检测与校正码的基础性论文中首次引入这个概念。在通信中累计定长二进制字中发生翻转的错误数据位&#xff0c;所以它也被称为信号距离。 汉明距离…

js设置居中

我们在编写html页面的时候&#xff0c;不可避免的会遇到元素居中的问题&#xff0c;水平居中还好说 我们可以通过设置margin: auto;text-align: center;来实现水平居中。垂直居中的话&#xff0c;单个标签我们可以通过设置line-height来实现垂直居中&#xff0c;但是多个标签的…

CSS常见图片居中,文字居中,版心居中集合

1.margin:0 auto&#xff1b;&#xff08;水平居中&#xff09; 适用于&#xff08;块级元素&#xff09; wrapper&#xff08;wrapper只负责版心的效果&#xff09;定义一个固定的宽度&#xff1b;margin&#xff08;外边距&#xff09;左右的值设置为auto。 让带有wrapper…

垂直居中的方法

总结垂直居中的方法 <div class"layout-wrapper"><div class"box1"><h4>垂直居中方法</h4></div></div>.layout-wrapper{width:300px;height:300px;border: 1px solid red; } .box1{height:150px;width:150px;border…

win10任务栏怎样居中win10任务栏居中设定教程

win11系统内置任务栏居中的设置项&#xff0c;但是win10系统没有&#xff0c;倘若win10顾客也想让自己的任务栏居中的话&#xff0c;应当怎样设置呢&#xff1f;你先撤销任务栏锁住&#xff0c;随后新建菜单栏。之后选定一个空白文件夹&#xff0c;之后任务栏就会发生两条竖杠&…

HTML+CSS,让div在屏幕中居中(水平居中+垂直居中)方法总结

最近写网页经常需要将div在屏幕中居中显示&#xff0c;遂记录下几个常用的方法&#xff0c;都比较简单。 水平居中直接加上<center>标签即可&#xff0c;或者设置margin:auto;当然也可以用下面的方法 下面说两种在屏幕正中&#xff08;水平居中垂直居中&#xff09;的方…

css字体居中(css字体居中对齐)

css如何让表格居中 层叠样式表(英文全称&#xff1a;Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。 关于网页设计CSS文本垂直居中的问题 text-align:center;文本居中显示 vertical-align…

css图片居中

相信很多工程师都搜索过css图片居中的方法吧&#xff0c;但总是出现各种各样的问题。其实css图片居中分为很多种情况 第一种&#xff1a;已知父元素的高度&#xff0c;单独设置文字水平垂直居中&#xff0c;我们只需要设置css样式line-hight:同父元素高度&#xff0c;text-alig…

html中如何居中

第一步&#xff1a;打开网页编辑器&#xff0c;新建一个网页文件。 第二步&#xff1a;我们编写两个div标签用来做一个对比演示&#xff0c;既嵌套式div。 第三步&#xff1a;首先我想让最外层的div进行真正意义上的居中——既在浏览器页面水平方向和垂直方向都居中显示。 …

HTML中进行居中设置

html居中的方法如下&#xff1a; 1、打开HTML的编辑器。 2、找到需要居中的图片或者文字。 3、在body里面&#xff0c;设置CSS样式。 4、添加样式为&#xff1a;text-align&#xff1a;center &#xff1b;即可。 超文本标记语言&#xff08;Hyper Text Markup Language&a…

div居中

HTML的div居中 一、margin:0px auto; 给需要居中的div设置一个宽度&#xff0c;然后设置元素的上下外边距为 相等 左右外边距为 auto&#xff0c;比如&#xff0c;margin:0px auto。 则可以实现 div 居中显示。 对于浮动元素&#xff0c;设置其左右外边距为关键字 auto 是无效…

HTML元素居中(文字居中,块居中【垂直/水平居中】)

一、文字、行内元素水平居中 给父级属性设置text-align: center即可 HTML代码: <div><p>p</p></div> <div><span>span</span></div> <div><a href"#">a</a></div>CSS代码&#xff1a; …

html让文字居中

html让文字居中的方法&#xff1a;1、给文本所在标签加CSS属性值“text-align:center”&#xff1b;2、在行内标签或行内块级标签中加CSS属性值“text-align:left”。 本文操作环境&#xff1a;windows7系统、HTML5&&CSS3版、Dell G3电脑。 两种情况&#xff1a;1、文…

word文字居中怎么设置

电脑编辑文档时&#xff0c;想要把文字内容居中显示&#xff0c;那么word怎么居中文字&#xff0c;今天和大家一起学习下。 方法1 1&#xff0c;打开新建的word文档&#xff0c;输入文字。 2&#xff0c;选中文字&#xff0c;然后点击工具栏的“居中对齐”&#xff0c;确定即…

8种css居中实现的详细实现方式了

这是一篇关于居中对齐方式的总结 开篇之前&#xff0c;先问一下大家都知道几种居中的实现方式&#xff1f; 面试时答出来两三个就不错了&#xff0c;就怕面试官还让你继续说。今天就来总结一下这些居中的方式 使用flex布局设置居中。使用flex 时也能通过给子项设置margin: au…