Python计算巴氏距离

Python计算巴氏距离

巴氏距离简介

在统计中,巴氏距离(Bhattacharyya Distance)测量两个离散或连续概率分布的相似性。它与衡量两个统计样品或种群之间的重叠量的巴氏系数密切相关。巴氏距离和巴氏系数以20世纪30年代曾在印度统计研究所工作的一个统计学家A. Bhattacharya命名。同时,巴氏系数可以被用来确定两个样本被认为相对接近的,它是用来测量中的类分类的可分离性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总而言之,巴氏距离在遥感机器学习分类上的作用就是,选出不同时期影响重要性更大的分类指标(指数和纹理特征),以便下一步计算。
在这里插入图片描述
在这里插入图片描述

源代码

WENAME1=['mean1','var1','hom1']
WENAME2=['mean1','var1','hom1']
WEMEAN=[5.12,1.34,0.8]
WESTD=[6.12,4.23,0.25]
def cal(Mi,Mj,Sigmai,Sigmaj):Mi=MiMj=MjSigmai=SigmaiSigmaj=Sigmajd_B_i_j=0.25*(0.25*((Sigmai*Sigmai)/(Sigmaj*Sigmaj)+(Sigmaj*Sigmaj)/(Sigmai*Sigmai)+2))+0.25*(((Mi-Mj)*(Mi-Mj))/(Sigmai*Sigmai)+(Sigmaj*Sigmaj))return d_B_i_jLAVE={}
for i in range(len(WENAME1)):DSUM=0.0for j in range(len(WENAME2)):Distance=cal(WEMEAN[i],WEMEAN[j],WESTD[i],WESTD[j])print('{}*{}的巴氏距离:{}'.format(WENAME1[i],WENAME1[j],Distance))DSUM=DSUM+Distanceprint('{}的巴氏距离求和是:{}'.format(WENAME1[i],DSUM))AVE=DSUM/len(WENAME1)print('{}的巴氏距离平均值是:{}'.format(WENAME1[i],AVE))LAVE[WENAME1[i]]=AVE
print(LAVE)
SLAVE=sorted(LAVE.items(),key=lambda d:d[1],reverse=False)
print(SLAVE)

运行结果

在这里插入图片描述
我们在代码中使用3个特征为示例,mean1,var1,hom1
并且给出了这三个特征的均值和标准差

最后程序依次计算每个指标与其他指标的巴氏距离,并用巴氏距离均值表示每个指标的平均巴氏距离,最后对这些特征进行从小到大排序,平均巴氏距离越大的特征重要性越大

代码注释

1、SLAVE=sorted(LAVE.items(),key=lambda d:d[1],reverse=False)

这段代码是对字典LAVE进行按值排序的操作。sorted()函数接受一个字典项的迭代器作为输入,并按照键或值进行排序。在这个例子中,使用lambda函数按照值(d)进行排序,并且reverse参数设置为False表示按升序排列。
使用sorted函数对字典进行排序的方法:
在这里插入图片描述

参考博文

  1. 机器学习中的数学——距离定义(二十七):巴氏距离(Bhattacharyya Distance)
  2. 基于光谱和纹理特征综合的农作物种植结构提取方法研究
  3. Python中的排序函数–sorted()函数

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

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

相关文章

<Xcode> Xcode IOS无开发者账号打包和分发

关于flutter我们前边聊到的初入门、数据解析、适配、安卓打包、ios端的开发和黑苹果环境部署,但是对于苹果的打包和分发,我只是给大家了一个链接,作为一个顶级好男人,我认为这样是对大家的不负责任,那么这篇就主要是针…

解决WIFI网络登录困难的方法

当你遇到手机WIFI网络在连接成功后,总是提示网络受限或者当前网络无法连接互联网,但过一段时间后它又自动恢复正常的的问题,可以尝试用以下方法来解决。 第一步:打开WLAN连接设置界面,选择“更多设置” 第二步&#x…

分类预测 | MATLAB实现NGO-CNN北方苍鹰算法优化卷积神经网络数据分类预测

分类预测 | MATLAB实现NGO-CNN北方苍鹰算法优化卷积神经网络数据分类预测 目录 分类预测 | MATLAB实现NGO-CNN北方苍鹰算法优化卷积神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现NGO-CNN北方苍鹰算法优化卷积神经网络数据分类预测&…

c语言常用语法,长时间不用容易忘。

关键字 auto 声明自动变量const 定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变extern 声明变量或函数是在其它文件或本文件的其他位置定义register 声明寄存器变量signed 声明有符号类型变量或函数static 声明静态变量,修饰…

c#中的接口

使用IEnumerable统一迭代变量类型 class Program {static void Main(string[] args){int[] nums1 new int[] { 1, 2, 3, 4, 5 };ArrayList nums2 new ArrayList { 1, 2, 3, 4, 5 };Console.WriteLine(Sum(nums1));Console.WriteLine(Sum(nums2));Console.WriteLine(Avg(nums…

Windows系统利用cpolar内网穿透搭建Zblog博客网站并实现公网访问内网!

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…

华为智能高校出口安全解决方案(3)

本文承接: https://qiuhualin.blog.csdn.net/article/details/133267254?spm1001.2014.3001.5502 重点讲解华为智能高校出口安全解决方案的攻击防御&安全运维&日志审计的部署流程。 华为智能高校出口安全解决方案(3) 课程地址攻击防…

【数据结构】【C++】封装哈希表模拟实现unordered_map和unordered_set容器

【数据结构】&&【C】封装哈希表模拟实现unordered_map和unordered_set容器 一.哈希表的完成二.改造哈希表(泛型适配)三.封装unordered_map和unordered_set的接口四.实现哈希表迭代器(泛型适配)五.封装unordered_map和unordered_set的迭代器六.解决key不能修改问题七.实…

家政服务小程序,家政系统开发

家政服务小程序,家政系统开发,打造一线家政系统,提效增收 家政服务小程序 互联网+家政系统,打造互联网+家政公司app开发,支持个性化定制,直接搭建,上手即用.实…

Windows上安装 Go 环境

一、下载go环境 下载go环境:Go下载官网链接找到自己想下载的版本,点击下载,比如我这是windows64位的,我就直接点击最新的。 二、安装go环境 双击下载的.msi文件 next next 他默认的是c盘,你自己可以改,然…

最新影视视频微信小程序源码-带支付和采集功能/微信小程序影视源码PHP(更新)

源码简介: 这个影视视频微信小程序源码,新更新的,它还带支付和采集功能,作为微信小程序影视源码,它可以为用户 提供丰富的影视资源,包括电影、电视剧、综艺节目等。 这个小程序影视源码,还带有…

C语言之内存函数篇(3)

目录 memcpy memcpy的使用 memcpy的模拟实现 NO1. NO2. memcpy可否实现重叠空间的拷贝 my_memcpy memcpy memmove memmove memmove模拟实现 分析 代码 memset memset的使用 memcmp memcmp的使用 <0 0 >0 今天我们继续介绍几个重要的内存操作函…

Celery结合flask完成异步任务与定时任务

Celery 常用于 web 异步任务、定时任务等。 使用 redis 作为 Celery的「消息代理 / 消息中间件」。 这里通过Flask-Mail使用qq邮箱延时发送邮件作为示例 pip install celery pip install redis pip install Flask-Mail1、使用flask发送邮件 使用 Flask-Mail 发送邮件需要进行…

【无标题】ICCV 2023 | CAPEAM:基于上下文感知规划和环境感知记忆机制构建具身智能体

文章链接&#xff1a; https://arxiv.org/abs/2308.07241 2023年&#xff0c;大型语言模型&#xff08;LLMs&#xff09;以及AI Agents的蓬勃发展为整个机器智能领域带来了全新的发展机遇。一直以来&#xff0c;研究者们对具身智能&#xff08;Embodied Artificial Intelligenc…

通过java向jar写入新文件

文章目录 原始需求分析实施步骤引入依赖核心编码运行效果 原始需求 有网友提问&#xff1a; 我想在程序中动态地向同一个jar包中添加文件&#xff0c;比如&#xff0c;我的可执行jar包是test.jar,我要在它运行时生成一些xml文件并将这些文件添加到test.jar中,请问如何实现&…

【分布式计算】三、虚拟化 Virtualization

1.什么是虚拟化 1.1.非虚拟化 我们首先来认识什么是非虚拟化   1.一台机器、一个操作系统、几个应用程序   2.应用程序可能会相互影响。   3.机器利用率较低&#xff0c;正常情况下低于25%。 关于X86平台&#xff1a; 1.服务器基础设施利用率低&#xff08;10-18%&#…

Linux驱动开发笔记

疑问 file_operation中每个操作函数的形参中inode的作用 file_operation定义了Linux内核驱动的所有的操作函数&#xff0c;每个操作函数与一个系统调用对应&#xff0c;对于字符设备来说&#xff0c;常用的函数有&#xff1a;llseek、read、write、pool等等&#xff0c;这些操…

阿里云七代云服务器实例、倚天云服务器及通用算力型和经济型实例规格介绍

在目前阿里云的云服务器产品中&#xff0c;既有五代六代实例规格&#xff0c;也有七代和八代倚天云服务器&#xff0c;同时还有通用算力型及经济型这些刚推出不久的新品云服务器实例&#xff0c;其中第五代实例规格目前不在是主推的实例规格了&#xff0c;现在主售的实例规格是…

【数据结构】堆,堆的实现,堆排序,TOP-K问题

大家好&#xff01;今天我们来学习数据结构中的堆及其应用 目录 1. 堆的概念及结构 2. 堆的实现 2.1 初始化堆 2.2 销毁堆 2.3 打印堆 2.4 交换函数 2.5 堆的向上调整 2.6 堆的向下调整 2.7 堆的插入 2.8 堆的删除 2.9 取堆顶的数据 2.10 堆的数据个数 2.11 堆的判…

内存函数的介绍和模拟实现

目录 1.memcpy的使用(内存拷贝) 2.memcpy的实现 3.memmove的使用&#xff08;内存拷贝&#xff09; 4.memmove的实现 5.memset 的使用&#xff08;内存设置&#xff09; 6.memcmp的使用&#xff08;内存比较&#xff09; 1.memcpy的使用(内存拷贝) void * memcpy ( void * …