Python如何实现马氏距离求取函数
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍了Python如何实现马氏距离求取函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。马氏距离区别于欧式距离,如百度知道
千家信息网最后更新 2025年11月13日Python如何实现马氏距离求取函数
这篇文章主要介绍了Python如何实现马氏距离求取函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
马氏距离区别于欧式距离,如百度知道中所言:
马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示点与一个分布之间的距离。它是一种有效的计算两个未知样本集的相似度的方法。与 欧氏距离不同的是,它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的),并且是尺度无关的(scale-invariant),即独立于测量尺度。对于一个均值为μ, 协方差矩阵为Σ的多变量向量,其马氏距离为sqrt( (x-μ)'Σ^(-1)(x-μ) )。
因此,对于马氏距离最终的定义式为:
上代码,将马氏距离求取式,封装为Python函数,拷贝即可使用:
from numpy import *import numpydef get_mahalanobis(x, i, j): xT = x.T # 求转置 D = numpy.cov(xT) # 求协方差矩阵 invD = numpy.linalg.inv(D) # 协方差逆矩阵 assert 0 <= i < x.shape[0], "点 1 索引超出样本范围。" assert -1 <= j < x.shape[0], "点 2 索引超出样本范围。" x_A = x[i] x_B = x.mean(axis=0) if j == -1 else x[j] tp = x_A - x_B return numpy.sqrt(dot(dot(tp, invD), tp.T))
使用方式如下:
if __name__ == '__main__': # 初始化数据点集,或者从其它地方加载 x = numpy.array([[3, 4], [5, 6], [2, 2], [8, 4]]) # 求第0个点到均值之间的马氏距离(j为-1时代表均值) print(get_mahalanobis(x, 0, -1)) # 求第0个点到第1个点之间的马氏距离 print(get_mahalanobis(x, 0, 1)) # 求第2个点到第3个点之间的马氏距离(索引从0开始算起) print(get_mahalanobis(x, 2, 3))
运行结果贴图
感谢你能够认真阅读完这篇文章,希望小编分享的"Python如何实现马氏距离求取函数"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
马氏
之间
篇文章
函数
协方差
均值
样本
点到
矩阵
索引
信息
尺度
范围
不同
有效
相似
上代
两个
代表
价值
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖南工程管理软件开发平台
pg数据库驱动下载
美团软件开发和服务器投入
网络安全考研属于什么类
使命召唤手游总是连接服务器
数据库敏感信息报错
中国农业银行软件开发薪资
广电网络公司网络技术是什么性质
不灵姐服务器生存第86集
动态代理ip服务器
数据库sql语句习题
管理口kvm连接服务器
怎么设置媒体服务器
日照软件开发培训
手机登录台湾服务器
专题网络安全
网络安全法是公法
莱瑞软件开发有限公司怎么样
个人电脑用服务器cpu好不
云知故服务器
虹口区智能化软件开发要多少钱
魔兽人多的服务器推荐
网络安全准入控制公司
奥鹏网络技术与安全答案
珠海飞企互联网科技公司韩恒
网络安全包括意识形态
怎样购买阿里云服务器
云服务器安全论文
糖豆人外挂服务器
手机膜参数数据库