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.mzph.cn/news/91172.shtml

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

相关文章

大麦订单截图生成 大麦一键生成订单截图

新版大麦订单生成 图样式展示 这个样式图就是在大麦生成完的一个订单截图,它的状态是等待卖家发货 后台一键生成,独立后台管理 教程:修改conf数据库账号密码 不会的可以看源码里有搭建教程 下载程序:https://pan.baidu.com/…

Android widget 小部件使用指南强化版

Android widget 小部件使用指南强化版 一、简单UI的小部件二、含集合的小部件三、可配置的小部件四、可控制的小部件五、Android 12 Widget 更新 小部件是主屏幕定制的一个重要方面。您可以将它们视为应用程序最重要的数据和功能的“概览”视图,这些数据和功能可以直…

如何在 Elasticsearch 中使用 Openai Embedding 进行语义搜索

随着强大的 GPT 模型的出现,文本的语义提取得到了改进。 在本文中,我们将使用嵌入向量在文档中进行搜索,而不是使用关键字进行老式搜索。 什么是嵌入 - embedding? 在深度学习术语中,嵌入是文本或图像等内容的数字表示…

使用GDIView排查GDI对象泄漏导致的程序UI界面绘制异常问题

目录 1、问题说明 2、初步分析 3、查看任务管理器,并使用GDIView工具分析 4、GDIView可能对Win10兼容性不好,显示的GDI对象个数不太准确 5、采用历史版本比对法,确定初次出现问题的时间点,并查看前一天的代码修改记录 6、将…

MySQL架构 InnoDB存储引擎

1. 什么是Mysql? 我们在开发的时候,我们都需要对业务数据进行存储,这个时候,你们就会用到MySQL、Oracal等数据库。 MySQL它是一个关系型数据库,这种关系型数据库就有Oracal、 MySQL,以及最近很火的PgSQL等。…

Docker-Windows安装使用

1.下载docker https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2.配置虚拟化环境 通过控制面板“设置”启用 Hyper-V 角色 右键单击 Windows 按钮并选择“应用和功能”。选择相关设置下右侧的“程序和功能”。选择“打开或关闭 Windows 功能”。选择“Hyper-…

ElementUI -- Mock.js介绍和使用与首页导航栏左侧菜单搭建

1.1 mockjs介绍 Mock.js是一个用于生成随机数据和模拟接口请求的JavaScript库。它可以帮助开发人员在前端开发过程中模拟后端接口的返回数据,以便进行前端页面的开发和测试。 Mock.js有两个重要的特性风靡前端: 数据类型丰富 Mock.js提供了一套简单易用的API&#x…

双指针算法——移动零

双指针算法——移动零😎 前言🙌题目详情:图解分析:代码分享:B站讲解视频链接: 总结撒花💞 😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧…

红队打靶:THE PLANETS: MERCURY打靶思路详解(vulnhub)

目录 写在开头 第一步:主机发现和端口扫描 第二步:Web渗透 第三步:获取初步立足点并搜集信息 第四步:软连接劫持sudo提权 总结与思考 写在开头 本篇博客在自己的理解之上根据大佬红队笔记的视频进行打靶,详述了…

基于SSM的教师办公管理的设计与实现(有报告)。Javaee项目。

演示视频: 基于SSM的教师办公管理的设计与实现(有报告)。Javaee项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring S…

你的游戏项目有这些问题吗?

在移动游戏对高品质画面的要求不断增加的背景下,我们一直专注于移动设备GPU性能的优化,以确保您的游戏体验得以最佳展现。然而,不同GPU芯片之间的性能差异以及由此可能引发的GPU瓶颈问题使得优化工作更加具有挑战性。 因此,在不久…

git报错:Failed to connect to 127.0.0.1 port 1080

Bug描述 由于在试了网上的这条命令 git config --global http.proxy socks5 127.0.0.1:1080 git config --global https.proxy socks5 127.0.0.1:1080git config --global http.proxy 127.0.0.1:1080 git config --global https.proxy 127.0.0.1:1080Bug描述:Faile…

Three.js加载360全景图片/视频

Three.js加载360全景图片/视频 效果 原理 将全景图片/视频作为texture引入到three.js场景中将贴图与球形网格模型融合,将球模型当做成环境容器使用处理视频时需要以dom为载体,加载与控制视频动作每次渲染时更新当前texture,以达到视频播放效…

基于arduino的土壤湿度检测

1.总体设计框图 本浇花系统总体上分为硬件和软件两大组成部分。硬件部分包括Arduino UNO开发板、温湿度传感器、通信模块、浇水执行系统和液晶显示等。软件部分包括Android客户端。系统结构如图1所示 本浇花系统总体上分为硬件和软件两大组成部分。硬件部分包括Arduino UN…

Node.js安装教程【附安装包资源】

文章目录 安装包下载安装流程配置环境变量检查Node.js是否安装成功指定全局模块和模块缓存的路径设置淘宝镜像全局安装cnpm(这一步可以选择是否执行) 安装包下载 安装包下载 安装流程 修改安装路径 配置环境变量 看看环境变量里面是否有Node.js的…

手把手带你体验一场属于Linux的学习之旅

手把手带你体验一场属于Linux的学习之旅 Linux是一个开源的操作系统,以性能高和稳定著称因为继承unix,在权限和网络上的设计与表现也非常优异。同时其系统开源/免费/优秀/稳定,自由高可定制,深受程序员们等代表的极客们的喜爱&…

Python入门教程48:Pycharm永久镜像源的pip配置方法

国内几个好用的Python镜像服务器地址: 清华大学镜像站:https://pypi.tuna.tsinghua.edu.cn/simple/阿里云镜像站:https://mirrors.aliyun.com/pypi/simple/中科大镜像站:https://pypi.mirrors.ustc.edu.cn/simple/中国科技大学镜…

Ros2 学习02- ubuntu22.04 安装ros2

设置镜像源 sudo vim /etc/apt/sources.list#阿里源 deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jamm…

华为云智能化组装式交付方案 ——金融级PaaS业务洞察及Web3实践的卓越贡献

伴随信息技术与金融业务加速的融合,企业应用服务平台(PaaS)已从幕后走向台前,成为推动行业数字化转型的关键力量。此背景下,华为云PaaS智能化组装式交付方案闪耀全场,在近日结束的华为全联接大会 2023上倍受…

【Vue】数据监视输入绑定

hello,我是小索奇,精心制作的Vue系列持续发放,涵盖大量的经验和示例,如有需要,可以收藏哈 本章给大家讲解的是数据监视,前面的章节已经更新完毕,后面的章节持续输出,有任何问题都可以…