本文实例讲述了Python实现的计算马氏距离算法。分享给大家供大家参考,具体如下:
我给写成函数调用了
python实现马氏距离源代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# 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程序设计有所帮助。
原文链接:https://blog.csdn.net/u013421629/article/details/78846674