Python实现的计算马氏距离算法示例

yipeiwu_com7年前Python基础

本文实例讲述了Python实现的计算马氏距离算法。分享给大家供大家参考,具体如下:

我给写成函数调用了

python实现马氏距离源代码:

# encoding: utf-8
from __future__ import division
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import numpy as np
def mashi_distance(x,y):
  print x
  print y
  #马氏距离要求样本数要大于维数,否则无法求协方差矩阵
  #此处进行转置,表示10个样本,每个样本2维
  X=np.vstack([x,y])
  print X
  XT=X.T
  print XT
  #方法一:根据公式求解
  S=np.cov(X)  #两个维度之间协方差矩阵
  SI = np.linalg.inv(S) #协方差矩阵的逆矩阵
  #马氏距离计算两个样本之间的距离,此处共有4个样本,两两组合,共有6个距离。
  n=XT.shape[0]
  d1=[]
  for i in range(0,n):
    for j in range(i+1,n):
      delta=XT[i]-XT[j]
      d=np.sqrt(np.dot(np.dot(delta,SI),delta.T))
      print d
      d1.append(d)
if __name__ == '__main__':
  # 第一列
  x = [3, 5, 2, 8]
  # 第二列
  y = [4, 6, 2, 4]
  mashi_distance(x,y)

运行结果:

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

相关文章

python把数组中的数字每行打印3个并保存在文档中的方法

python把数组中的数字每行打印3个并保存在文档中的方法

如下所示: arrs=[2,15,48,4,5,6,7,6,4,1,2,3,6,6,7,4,6,8] f=open('test.txt','w+') count=0 for temp...

浅谈python import引入不同路径下的模块

python 包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径。 下面将具体介绍几种常用情况: (1)主程序与模块程序在同一目录下: 如下面程序...

详解python函数的闭包问题(内部函数与外部函数详述)

python函数的闭包问题(内嵌函数) >>> def func1(): ... print ('func1 running...') ... def fu...

Python3.4解释器用法简单示例

本文实例讲述了Python3.4解释器用法。分享给大家供大家参考,具体如下: Linux/Unix的系统上,Python解释器通常被安装在 /usr/local/bin/python3....

Python嵌套列表转一维的方法(压平嵌套列表)

前一段去云英面试,技术官很”不厚道“了问了一个非常简单的问题:如何将多维列表转化了一维的?当时虽然想到了使用迭代或者列表生成式可以做到,但是可以没能可行的代码,回来后一顿后悔。 对于规范...