Я пытался проверить мой код для вычисления Расстояние Махаланобиса , записанное в Python (и двойная проверка для сравнения результата в OpenCV) Мои данныеточки имеют размерность 1 (5 строк x 1 столбец).
В OpenCV (C ++) мне удалось вычислить расстояние Махаланобиса, когда измерение точки данных было с измерениями выше.
Следующий код был неудачным при расчете расстояния Махаланобиса, когда размерность матрицы составляла 5 строк x 1 столбец. Но это работает, когда число столбцов в матрице превышает 1 :
import numpy;
import scipy.spatial.distance;
s = numpy.array([[20],[123],[113],[103],[123]]);
covar = numpy.cov(s, rowvar=0);
invcovar = numpy.linalg.inv(covar)
print scipy.spatial.distance.mahalanobis(s[0],s[1],invcovar);
Я получаю следующую ошибку:
Traceback (most recent call last):
File "/home/abc/Desktop/Return.py", line 6, in <module>
invcovar = numpy.linalg.inv(covar)
File "/usr/lib/python2.6/dist-packages/numpy/linalg/linalg.py", line 355, in inv
return wrap(solve(a, identity(a.shape[0], dtype=a.dtype)))
IndexError: tuple index out of range