【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)






运行结果:

"D:\Program Files\Python27\python.exe" D:/PycharmProjects/learn2017/马氏距离.py
[3, 5, 2, 8]
[4, 6, 2, 4]
[[3 5 2 8]
 [4 6 2 4]]
[[3 4]
 [5 6]
 [2 2]
 [8 4]]
1.24316312102
1.24316312102
2.13200716356
2.44948974278
2.27636073192
2.27636073192

Process finished with exit code 0
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东华果汁哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值