我有两个2D点集A和B。我想为B中的每个点找到A中最近的邻居。但是,我正在处理不确定的点(即点具有均值(2D向量)和2×2协方差矩阵)。
因此,我想使用Mahalanobis距离,但在scikit-learn(例如)中,我无法为每个点传递协方差矩阵,因为它期望单个协方差矩阵。
目前,只考虑平均位置(即我2D正态分布的平均值),我有:
因此,我想使用Mahalanobis距离,但在scikit-learn(例如)中,我无法为每个点传递协方差矩阵,因为它期望单个协方差矩阵。
目前,只考虑平均位置(即我2D正态分布的平均值),我有:
nearest_neighbors = NearestNeighbors(n_neighbors=1, metric='l2').fit(A)
distance, indices = nearest_neighbors.kneighbors(B)
针对我不确定的点,我更倾向于计算它们的马氏距离(Mahalanobis distance),而不是使用L2范数作为距离,这个计算是在一个点a
属于集合A
,另一个点b
属于集合B时进行的:
d(a, b) = sqrt( transpose(mu_a-mu_b) * C * (mu_a-mu_b))
其中 C = inv(cov_a + cov_b)
其中 mu_a
(或 mu_b
)和 cov_a
(或 cov_b
)是不确定点 a
(或 b
)的二维均值和2*2协方差矩阵。