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)
運行結果:
