N차원에서의 배열이 있고, 그것이 하나의 분포를 따른다고 가정했을 때 중심으로 정도를 구하기 위해서 사용되는 metric이다. from scipy.spatial.distance.mahalanobis()
와 같은 결과를 얻었다.
def calculate_distance_mahalanobis(X):
mean = np.mean(X, axis=0)
cov = np.cov(X.T)
inv_cov = np.linalg.inv(cov)
l = np.dot((X-mean), inv_cov)
dist = np.sqrt(np.dot(l, (X-mean).T).diagonal())
return mean, cov, dist