首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Mahalanobis距离多维z得分

Python Mahalanobis距离多维z得分
EN

Stack Overflow用户
提问于 2021-03-29 20:57:09
回答 1查看 255关注 0票数 0

我想要一个关于已知固定点的二维数据的性能分数,比如z分数。我想我现在需要的是马氏距离,而不是每个方向的z分数。但我没有两个向量,我有一个2xN的数组,包含x-y中N个点的位置,还有一个固定的2D点,我想要将它与之进行比较。我看了这个例子:

代码语言:javascript
复制
from scipy.spatial import distance
iv = [[1, 0.5, 0.5], [0.5, 1, 0.5], [0.5, 0.5, 1]]
distance.mahalanobis([1, 0, 0], [0, 1, 0], iv)

用于在Python中计算,但我不知道我的iv应该是多少。我是不是把我已知的观点,比如:

代码语言:javascript
复制
distance.mahalanobis([1,4],iv)

?谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-03-29 23:08:19

我将在维度2的X中创建随机数据,它将定义分布,

代码语言:javascript
复制
import numpy as np
import scipy

from scipy.spatial import distance

X = np.random.normal(size=(100,2), loc=(1,4) )

现在,您可以使用第一个点的马氏距离

代码语言:javascript
复制
distance.mahalanobis( X[0] , np.mean(X,axis=0), scipy.linalg.inv(np.cov(X.T)) )

例如,使用您自己的p = (1,4)

代码语言:javascript
复制
distance.mahalanobis( np.array([1,4]) , np.mean(X,axis=0), scipy.linalg.inv(np.cov(X.T)) )

如果你的N太大,COV矩阵可能太贵了,不能计算,你可以采样。

N的大小从100更改为1000确实不会有太大影响,因为相同分布的样本只是变得更大。要感受不同参数的效果,最好的方法是绘制一些图片,并尝试不同的点p。另一种选择是在不同的均值附近生成X,即X = np.random.normal(size=(100,2), loc=(2,10) ),如果你保持你的p (1,4)也有效果

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66854630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档