我給寫成函式呼叫了
python實現馬氏距離源**:
# encoding: utf-8www.cppcns.com
from __future__ import division
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import nu程式設計客棧mpy 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 __nam程式設計客棧e_程式設計客棧_ == '__main__':
# 第一列
x = [3, 5, 2, 8]
# 第二列
y = [4, 6, 2, 4]
mashi_distance(x,y)
執行結果:
馬氏距離詳解
三 例項認知 四 公式推導 致謝從下往上的一段50公尺長的坡道路,下面定乙個a點,上面定b乙個點。假設有兩種情況從a到b a 坐手扶電梯上去。b 從手扶電梯旁邊的樓梯爬上去。兩種情況下我們分別會產生兩種不同的主觀感受,坐電梯輕鬆愉快,感覺很快就從a到了b a與b真近 走樓梯爬的氣喘吁吁很累,感覺走了...
距離度量之馬氏距離
用來度量乙個樣本點 與資料分布為 的集合的距離。假設樣本點為 資料集分布的均值為 協方差矩陣為 則這個樣本點 與資料集合的馬氏距離為 馬氏距離也可以衡量兩個來自同一分布的樣本x和y的相似性 當樣本集合的協方差矩陣是單位矩陣時,即樣本的各個維度上的方差均為 馬氏距離就等於歐式距離相等。當協方差矩陣是對...
距離度量之馬氏距離
用來度量乙個樣本點 與資料分布為 的集合的距離。假設樣本點為 資料集分布的均值為 協方差矩陣為 則這個樣本點 與資料集合的馬氏距離為 馬氏距離也可以衡量兩個來自同一分布的樣本x和y的相似性 當樣本集合的協方差矩陣是單位矩陣時,即樣本的各個維度上的方差均為 馬氏距離就等於歐式距離相等。當協方差矩陣是對...