gpt4 book ai didi

python - 马氏距离测量的工作示例

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:45 25 4
gpt4 key购买 nike

我需要测量两个 n 维向量之间的距离。看来 Mahalanobis Distance 在这里是一个不错的选择,所以我想试一试。

我的代码如下所示:

import numpy as np
import scipy.spatial.distance.mahalanobis

x = [19, 8, 0, 0, 2, 1, 0, 0, 18, 0, 1673, 9, 218]
y = [17, 6, 0, 0, 1, 2, 0, 0, 8, 0, 984, 9, 30]
scipy.spatial.distance.mahalanobis(x,y,np.linalg.inv(np.cov(x,y)))

但我收到此错误消息:

/usr/lib/python2.7/dist-packages/scipy/spatial/distance.pyc in mahalanobis(u, v, VI)
498 v = np.asarray(v, order='c')
499 VI = np.asarray(VI, order='c')
--> 500 return np.sqrt(np.dot(np.dot((u-v),VI),(u-v).T).sum())
501
502 def chebyshev(u, v):

ValueError: matrices are not aligned

Scipy Doc 说,VI 是协方差矩阵的逆矩阵,我认为 np.cov 是协方差矩阵,np.linalg。 inv 是矩阵的逆...

但我明白这里的问题是什么(矩阵未对齐):Matrix VI 的维度错误(2x2 而不是 13x13)。所以可能的解决方案是这样做:

VI = np.linalg.inv(np.cov(np.vstack((x,y)).T))

但不幸的是,np.cov(np.vstack((x,y)).T) 的 det 为 0,这意味着逆矩阵不存在。

那么当我什至无法计算协方差矩阵时,如何使用马哈拉诺比斯距离度量?

最佳答案

您确定马氏距离适合您的应用吗?根据Wikipedia您需要一组点来生成协方差矩阵,而不仅仅是两个向量。然后您可以计算向量与集合中心的距离。

关于python - 马氏距离测量的工作示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17187812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com