我想要一个关于已知固定点的二维数据的性能分数,比如z分数。我想我现在需要的是马氏距离,而不是每个方向的z分数。但我没有两个向量,我有一个2xN的数组,包含x-y中N个点的位置,还有一个固定的2D点,我想要将它与之进行比较。我看了这个例子:
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应该是多少。我是不是把我已知的观点,比如:
distance.mahalanobis([1,4],iv)?谢谢
发布于 2021-03-29 23:08:19
我将在维度2的X中创建随机数据,它将定义分布,
import numpy as np
import scipy
from scipy.spatial import distance
X = np.random.normal(size=(100,2), loc=(1,4) )现在,您可以使用第一个点的马氏距离
distance.mahalanobis( X[0] , np.mean(X,axis=0), scipy.linalg.inv(np.cov(X.T)) )例如,使用您自己的p = (1,4)
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)也有效果
https://stackoverflow.com/questions/66854630
复制相似问题