#24 数据中中的特徵相关性(3)

基於上篇,有了数据特徵,再来就可以把欧氏距离发展为马氏距离公式

马氏距离公式(Mahalanobis Distance)

(1)马氏距离的定义:有M个样本向量$X_1$~$X_m$,协方差矩阵为S,平均值记为向量$\mu$,则其中样本向量X到https://chart.googleapis.com/chart?cht=tx&chl=%5Cmu的马氏距离表示为:
https://chart.googleapis.com/chart?cht=tx&chl=D(X)%3D%5Csqrt%7B(X-%5Cmu)%5ETS%5E%7B-1%7D(X-%5Cmu)%7D

而其中向量$X_i$与$X_j$之间的马氏距离定义为:
https://chart.googleapis.com/chart?cht=tx&chl=D(X_i%2CX_j)%3D%5Csqrt%7B(X_i-X_j)%5ETS%5E%7B-1%7D(X_i-X_j)%7D

若协方差矩阵是对角矩阵,则公式变成了标准化欧氏距离公式

  • 马氏距离优点:量刚无关,排除变数之间相关性的干扰

用python实现马氏距离

import numpy as np


def get_dist(a, b):
    X = np.vstack([a, b])
    V = np.cov(X.T)
    VI = np.linalg.inv(V)
    delta = a - b
    return np.sqrt(np.einsum('nj,jk,nk->n', delta, VI, delta))


if __name__ == '__main__':
    a = np.array([[1, 3, 564, 675, 6567], [2, 4, 6, 8, 10]])
    b = np.array([[1, 3, 5566, 675, 6567], [1, 3, 5, 7, 9]])
    print(get_dist(a.T, b.T))

output

[0.44278752 0.44278752 2.62436934 0.44278752 0.44278752]
tags: tags: 2021IT

<<:  学习成长

>>:  初学者跪着学JavaScript Day24 : 原型不会,但你还有class

Python产生QRCode图片 - Python练习题一

Python练习题一 import qrcode import sys import os # 需要...

[iT铁人赛Day17]JAVA的函数(上篇)

函数要讲其实可以讲很多,但是这边只稍微做一个简单的介绍就好了 今天先来做个简单的介绍以及范例 函数的...

瀑布(Waterfall)& 敏捷(Agile)

-图片来源:gunther.verheyen 业务人员更了解监管要求和市场,因此IT和安全功能都应...

Day08 - [丰收款] 十六进位格式的後续探讨,字串传输容量倍增了!

延续昨天的十六进位转换,还有件重要的事。 隐藏的问题,容量变大了 若是某个需求,资料传送过程中不允许...

[影片]第27天:物件导向程序设计-类型转换(实例105~108)

4.7 类型转换 实例105 强制转换 实例106 将int 数值自动转型为double 数值 实...