У меня 60000 векторов 784 размеров.Эти данные имеют 10 классов.
Я должен оценить функцию, которая берет одно измерение и снова вычисляет метрику расстояния.Эта функция вычисляет расстояние каждого вектора до среднего его классов.В коде:
def objectiveFunc(self, X, y, indices):
subX = np.array([X[:,i] for i in indices]).T
d = np.zeros((10,1))
for n in range(10):
C = subX[np.where(y == n)]
u = np.mean(C, axis = 0)
Sinv = pinv(covariance(C))
d[n] = np.mean(np.apply_along_axis(mahalanobis, axis = 1, arr=C, v=u, VI=Sinv))
, где индексы вводятся с одним индексом, удаленным во время каждой итерации.
Как вы можете себе представить, я вычисляю множество отдельных компонентов во время вычисления расстояния Махаланобиса,Могу ли я сохранить все 784 составляющих расстояния?
В качестве альтернативы, какой самый быстрый способ вычислить расстояние Махаланобиса?