J'ai deux ensembles de points 2D A
et B
. Je veux trouver le premier voisin le plus proche dans A
pour chaque point dans B
. Cependant, j'ai affaire à des points incertains (c'est-à-dire qu'un point a une matrice de covariance moyenne (vecteur 2D) et une matrice de covariance 2 * 2). Je voudrais donc utiliser la distance de Mahalanobis, mais en scikit-learn
(par exemple), je ne peux pas passer une matrice de covariance pour chaque point, car elle attend une seule matrice de covariance.Voisins les plus proches avec des points incertains
Actuellement, on ne considère que les emplacements moyens (c.-à-dire de ma distribution 2D normale), j'ai:
nearest_neighbors = NearestNeighbors(n_neighbors=1, metric='l2').fit(A)
distance, indices = nearest_neighbors.kneighbors(B)
Avec mes points incertains, au lieu d'utiliser la norme L2 comme une distance, je préférerais calculer (entre un point a
dans A
et un point b
en B, la distance de Mahalanobis:
d(a, b) = sqrt(transpose(mu_a-mu_b) * C * (mu_a-mu_b))
où C = inv(cov_a + cov_b)
où mu_a
(resp mu_b
) et cov_a
(resp. cov_b
) sont la matrice de covariance moyenne et 2 * 2 du point incertain a
(respectivement b
).
nous montrer votre tentative, entrée code, et les résultats escomptés – depperm
La seule idée qui me vient à l'esprit est d'utiliser les vecteurs 6D comme entrées (pour stocker les emplacements et les quatre composantes de leur matrice de covariance) et de définir ma propre fonction de distance. – floflo29