0
这应该是一个简单的问题,或者我缺少信息,或者我错误地编码了这个。python中的Mahalanabois距离返回矩阵而不是距离
我想在Python中实现Mahalanabois距离,我从Python中的公式遵循。
我的代码如下:
a = np.array([[1, 3, 5]])
b = np.array([[4, 5, 6]])
X = np.empty((0,3), float)
X = np.vstack([X, [2,3,4]])
X = np.vstack([X, a])
X = np.vstack([X, b])
n = ((a-b).T)*(np.cov(X)**-1)*(a-b)
dist = np.sqrt(n)
DIST返回一个3×3阵列,但应予不能期待表示距离的单个数字?
dist = array([[ 1.5 , 1.73205081, 1.22474487],
[ 1.73205081 , 2. , 1.41421356],
[ 1.22474487 , 1.41421356, 1. ]])
维基百科不建议(对我)它应该返回一个矩阵。 python中mahalanbois距离的Google搜索实现我还没有找到可以比较的东西。
不应该是这样的矩阵求逆'numpy.linalg.inv'而不是点聪明反? – roadrunner66
@ roadrunner66偏离它当然应该。错过了。 Hovewer'np.linalg.inv(np.cov(X))'给出错误'LinAlgError:奇异矩阵.. .. –
是的,使用的矩阵可能没有很好地形成。 – roadrunner66