我应该如何在Java中实现Mahalanobis距离函数?

时间:2012-07-05 19:43:48

标签: java 3d matrix distance covariance

我正在研究java中的一个项目,并且有两个2d int数组,都是10x15。我想在它们之间转换Mahalanobis distance。它们按阵列的x轴分类(大小为10)。我知道您必须在这些组中找到平均值并重新分配数据以使其居中。我现在的问题是生成计算所需的协方差矩阵。如果有人知道一个很好的方法来做到这一点或指向一个有用的指南,可以指导我完成3D过程,这将是一个很大的帮助。感谢。

1 个答案:

答案 0 :(得分:1)

covariance矩阵包含任意两个变量之间的预期关系。给定向量x的统计分布,统计平均值为avg

covariance(i,j) = expected value of [ (x[i] - avg[i])(x[j] - avg[j]) ]

给定N向量v_1 ... v_N的统计集合,使用均值向量avg,您可以估算出它们的分布的协方差,如下所示:

sample_covariance(i,j) = sum[for k=1..N]( (v_k[i] - avg[i])*(v_k[j] - avg[j]) ) / (N-1)

这最后是您正在寻找的协方差矩阵。我建议你也阅读上面的wiki链接。