Python如何实现马氏距离求取函数
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍了Python如何实现马氏距离求取函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。马氏距离区别于欧式距离,如百度知道
千家信息网最后更新 2026年11月04日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安全错误
数据库的锁怎样保障安全
互联网科技有限公司
互联网与科技
广东猪兼强互联网科技有限公司
互联网科技网
科技类互联网
互联网 卓越科技
互联网科技革命
成都互联网科技公司
天下捷融互联网科技
猫创互联网科技
互联网汽车科技小镇
注册互联网科技公司经营范围大全
济南有互联网科技公司吗
互联网科技包装股份有限公司上市
信承诺互联网科技有限公司
容联科技互联网电商
盐城市攀科互联网科技有限公司
互联网领先科技成果宣传视频
银川新华互联网科技学校招聘
山东亿川互联网科技有限责任公司
新华互联网科技
互联网科技财经
互联网科技logo设计
中国互联网金融科技基金
科技互联网的估值
互联网系的金融科技公司
互联网科技项目计划书材料类
成都互联网科技公司工作好不好
艺电能源互联网科技有限公司招聘
互联网科技创新方面的资料