Python计算巴氏距离

news2024/11/29 5:36:17

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=Mi
    Mj=Mj
    Sigmai=Sigmai
    Sigmaj=Sigmaj
    d_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_j

LAVE={}
for i in range(len(WENAME1)):
    DSUM=0.0
    for j in range(len(WENAME2)):
        Distance=cal(WEMEAN[i],WEMEAN[j],WESTD[i],WESTD[j])
        print('{}*{}的巴氏距离:{}'.format(WENAME1[i],WENAME1[j],Distance))
        DSUM=DSUM+Distance
    print('{}的巴氏距离求和是:{}'.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.coloradmin.cn/o/1052236.html

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

相关文章

分布式事务-TCC异常-幂等性

1、幂等性问题: 二阶段提交时,如果二阶段执行成功通知TC时出现网路或其他问题中断,那么TC没有收到执行成功的通知,TC内部有定时器不断的重试二阶段方法,导致接口出现幂等性问题。 2、解决方法 和空回滚问题一样也是…

Elastic SQL 输入:数据库指标可观测性的通用解决方案

作者:Lalit Satapathy, Ishleen Kaur, Muthukumar Paramasivam Elastic SQL 输入(metricbeat 模块和输入包)允许用户以灵活的方式对许多支持的数据库执行 SQL 查询,并将结果指标提取到 Elasticsearch。 本博客深入探讨了通用 SQL …

基于SpringBoot的课程答疑系统

目录 前言 一、技术栈 二、系统功能介绍 学生信息管理 科目类型管理 老师回答管理 我的收藏管理 学生问题 留言反馈 交流区 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息互联网信息的飞速发展,无纸化作业变成了一种趋势&#x…

SPSS探索性分析

前言: 本专栏参考教材为《SPSS22.0从入门到精通》,由于软件版本原因,部分内容有所改变,为适应软件版本的变化,特此创作此专栏便于大家学习。本专栏使用软件为:SPSS25.0 本专栏所有的数据文件可在个人主页—…

求解平面上物体的有向3d包围盒

算法流程: (1)点云下采样(体素滤波); (2)ransac算法分割拟合地面平面; (3)裁剪工作区域(指定空间中四个点,裁剪点云只保留…

C++_基础语法

一、关键字 常用语法 #include<iostream>using namespace std;// 全局常量 #define DAY 30void main() {/** 变量与输出*/// 局部常量const int year 2023;// 控制台输出cout << "hello world" << endl;cout << "天&#xff1a;"…

国庆加速度!新增功能点锁定功能,敏捷开发新增估算功能,助力项目快速突破!

大家好&#xff0c;CoCode开发云旗下Co-Project V3.6智能项目管理平台正式发布&#xff0c;平台新增功能点锁定功能、敏捷开发模式新增估算板块和两种估算方式。 功能点锁定功能进一步提高了项目估算的灵活性和准确性&#xff0c;有利于提高项目估算效率&#xff1b;而敏捷开发…

Unity2023打包首包从78Mb到3.0Mb-震惊-我做对了什么

&#xff08;全程并没有使用AssetBundle , 历史原因&#xff0c;Resources目录还有不少资源残留&#xff09; 曾经的我在2019打包过最小包10m左右&#xff0c;后来发现到了Unity2020之后暴增到40m&#xff0c;又加上2023版本URP&#xff0c;1个Unity输出包可能至少55M 如下图…

Ubuntu基于Docker快速配置GDAL的Python、C++环境

本文介绍在Linux的Ubuntu操作系统中&#xff0c;基于Docker快速配置Python、C等不同编程语言均可用的地理数据处理库GDAL的方法。 首先&#xff0c;我们访问GDAL库的Docker镜像官方网站&#xff08;https://github.com/OSGeo/gdal/tree/master/docker&#xff09;。其中&#x…

Abstract Factory 抽象工厂模式简介与 C# 示例【创建型】

〇、简介 1、什么是抽象工厂模式&#xff1f; 一句话解释&#xff1a; 提供一个接口&#xff0c;以创建一系列相关或相互依赖的抽象对象&#xff0c;而无需指定它们具体的类。&#xff08;将一系列抽象类装进接口&#xff0c;一次接口实现&#xff0c;就必须实例化这一系列抽象…

如何在Ubuntu中切换root用户和普通用户

问题 大家在新装Ubuntu之后&#xff0c;有没有发现自己进入不了root用户&#xff0c;su root后输入密码根本进入不了&#xff0c;这怎么回事呢&#xff1f; 打开Ubuntu命令终端&#xff1b; 输入命令&#xff1a;su root&#xff1b; 回车提示输入密码&#xff1b; 提示&…

[ubuntu]ubuntu设置虚拟内存

首先查看自己是否加过虚拟内存或者查看虚拟内存当前状态可以命令&#xff1a; free -mh 创建交换分区&#xff1a; sudo mkdir /swap cd /swap sudo dd if/dev/zero ofswapfile bs1024 count12582912 其中count是自己分配内存大小&#xff0c;上面为12GB&#xff0c;你可…

视频异常检测:Human Kinematics-inspired Skeleton-based Video Anomaly Detection

论文作者&#xff1a;Jian Xiao,Tianyuan Liu,Genlin Ji 作者单位&#xff1a;Nanjing Normal University;The Hong Kong Polytechnic University 论文链接&#xff1a;http://arxiv.org/abs/2309.15662v1 内容简介&#xff1a; 1&#xff09;方向&#xff1a;视频异常检测…

Opengl之混合

OpenGL中,混合(Blending)通常是实现物体透明度(Transparency)的一种技术。透明就是说一个物体(或者其中的一部分)不是纯色(Solid Color)的,它的颜色是物体本身的颜色和它背后其它物体的颜色的不同强度结合。一个有色玻璃窗是一个透明的物体,玻璃有它自己的颜色,但它最终的…

rtp流广播吸顶喇叭网络有源吸顶喇叭

SIP-7043 rtp流广播吸顶喇叭网络有源吸顶喇叭 一、描述 SIP-7043是我司的一款SIP网络有源吸顶喇叭&#xff0c;具有10/100M以太网接口&#xff0c;内置有一个高品质扬声器&#xff0c;将网络音源通过自带的功放和喇叭输出播放&#xff0c;可达到功率20W。SIP-7043作为SIP系统的…

【分布式云储存】Springboot微服务接入MinIO实现文件服务

文章目录 前言技术回顾准备工作申请accessKey\secretKey创建数据存储桶公共资源直接访问测试 接入springboot实现文件服务依赖引入配置文件MinIO配置MinIO工具类 OkHttpSSLSocketClient兼容ssl静态资源预览解决方案资源上传预览测试测试结果 前言 上篇博客我们介绍了分布式云存…

四川玖璨电子商务有限公司提供专业的抖音培训课程

在今天的数字时代&#xff0c;抖音等社交媒体平台已经成为企业和个人扩大影响力、提高品牌知名度的主要战场。然而&#xff0c;如何在繁杂的社交媒体市场中取得成功呢&#xff1f;四川玖璨电子商务有限公司为你提供了一个解决方案——高质量的抖音培训课程。 四川玖璨电子商务…

黑马程序员Docker快速入门到项目部署(学习笔记)

目录 一、Docker简介 二、安装Docker 2.1、卸载旧版 2.2、配置Docker的yum库 2.3、安装Docker 2.4、启动和校验 2.5、配置镜像加速 2.5.1、注册阿里云账号 2.5.2、开通镜像服务 2.5.3、配置镜像加速 三、快速入门 3.1、部署MYSQL 3.2、命令解读 四、Docker基础 …

PostMan的学习

PostMan的学习 目录 环境变量和全局变量接口关联内置动态参数以及自定义动态参数实现业务闭环Postman断言批量运行collection数据驱动之CSV文件和JSON文件测试必须带请求头的接口Mock Serviers 服务器Cookie鉴权NewmanPostManNewManjenkins实现接口测试持续集成 参考资料&am…

在线文档生成:Swagger

1 简介 现在的项目开发都是前后端分离&#xff0c;前端和后端是两拨人在开发&#xff0c;所以这就涉及到前后端人员的接口交互了。如果使用自己维护的接口文档或口口相传的话&#xff0c;很容易出现接口更新不及时的问题。这个时候就需要像Swagger这样的在线文档生成框架出马了…