Python如何实现马氏距离求取函数
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章主要介绍了Python如何实现马氏距离求取函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。马氏距离区别于欧式距离,如百度知道
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
长城S2500服务器
有流量但显示连接不了服务器
软件开发的工资待遇如何
奉贤区服务器精密空调
网络技术填空题及答案
网络安全短视频接力活动的意义
医疗行业网络安全发文
后台服务器开发
软件开发面试题一般问什么
网络安全黑龙江院校
万达软件开发的啥项目
安卓应用软件开发收费
义乌web靶场网络安全
通信网络安全原理与实践
数据库某列一样的放一个集合
2017网络安全标语
有线监控服务器
网络安全大屏展示
oracle数据库如何加列
发生网络安全事故怎么办
ibm服务器进入管理控制台
必须的启动服务器
都江堰网络安全员
数据库加权抽样技术
百度软件开发公司哪家好
饥荒联机版服务器模组为啥闪退
软件开发分摊比例
网络安全要求系统加固
软件开发qcr是什么意思
梦幻西游所有服务器开区时间