Python 马氏距离求取函数详解

 更新时间:2021年11月16日 15:24:55   作者:苏苏与阿言  
这篇文章主要为大家介绍了Python 马氏距离求取函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

马氏距离区别于欧式距离,如百度知道中所言:

马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示点与一个分布之间的距离。它是一种有效的计算两个未知样本集的相似度的方法。与 欧氏距离不同的是,它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的),并且是尺度无关的(scale-invariant),即独立于测量尺度。对于一个均值为μ, 协方差矩阵为Σ的多变量向量,其马氏距离为sqrt( (x-μ)'Σ^(-1)(x-μ) )。

因此,对于马氏距离最终的定义式为:

上代码,将马氏距离求取式,封装为Python函数,拷贝即可使用:

from numpy import *
import numpy
def 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实现电脑定时关机的两种方法

    通过Python实现电脑定时关机的两种方法

    这篇文章主要介绍了分别利用PyQT5和Tkinter实现电脑的定时关机小程序,文中的示例代码讲解详细,对我们学习Python有一定的帮助,快跟随小编一起学习一下吧
    2021-12-12
  • Matlab、Python为工具解析数据可视化之美

    Matlab、Python为工具解析数据可视化之美

    下面介绍一些数据可视化的作品(包含部分代码),主要是地学领域,可迁移至其他学科,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • 解决win64 Python下安装PIL出错问题(图解)

    解决win64 Python下安装PIL出错问题(图解)

    这篇文章主要介绍了解决win64 Python下安装PIL出错问题,文中的解决方法也很简单,需要的朋友参考下吧
    2018-09-09
  • Python通过rembg实现图片背景去除功能

    Python通过rembg实现图片背景去除功能

    在图像处理领域,背景移除是一个常见且重要的任务,Python中的rembg库就是一个强大的工具,它基于深度学习技术,能够准确、快速地移除图像背景,本文将结合多个实际案例,详细介绍rembg库的安装、基本用法、高级功能以及在实际项目中的应用,需要的朋友可以参考下
    2024-09-09
  • Python Web框架之Django框架cookie和session用法分析

    Python Web框架之Django框架cookie和session用法分析

    这篇文章主要介绍了Python Web框架之Django框架cookie和session用法,结合实例形式分析了Django框架cookie和session的常见使用技巧与操作注意事项,需要的朋友可以参考下
    2019-08-08
  • Python编程使用NLTK进行自然语言处理详解

    Python编程使用NLTK进行自然语言处理详解

    这篇文章主要介绍了Python编程使用NLTK进行自然语言处理详解,涉及了nltk和开发环境的简单介绍,以及SentencesSegment,SentencesSegment等内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • python 实现list或string按指定分段

    python 实现list或string按指定分段

    今天小编就为大家分享一篇python 实现list或string按指定分段,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python将HTML快速转换成PDF的方法实现

    Python将HTML快速转换成PDF的方法实现

    在Web开发和报告任务中,将HTML内容转换为PDF是一种常见需求,本文主要介绍了Python将HTML快速转换成PDF的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Python Pandas的简单使用教程

    Python Pandas的简单使用教程

    Pandas 是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,今天通过本文给大家介绍Python Pandas的简单使用教程,感兴趣的朋友一起看看吧
    2021-08-08
  • Pandas.DataFrame时间序列数据处理的实现

    Pandas.DataFrame时间序列数据处理的实现

    本文主要介绍了Pandas.DataFrame时间序列数据处理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论