gpt4 book ai didi

python - 具有不确定点的最近邻

转载 作者:行者123 更新时间:2023-11-28 19:10:11 24 4
gpt4 key购买 nike

我有两个二维点集 AB。我想为 B 中的每个点找到 A 中的第一个最近邻居。但是,我正在处理不确定的点(即点具有均值(2D 向量)和 2*2 协方差矩阵)。

因此,我想使用马氏距离,但在 scikit-learn(例如)中,我无法为每个点传递一个协方差矩阵,因为它需要一个协方差矩阵。

目前,仅考虑平均位置(即我的 2D 正态分布的平均值),我有:

nearest_neighbors = NearestNeighbors(n_neighbors=1, metric='l2').fit(A)
distance, indices = nearest_neighbors.kneighbors(B)

对于我不确定的点,与其使用 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 (resp mu_b) 和 cov_a (resp. cov_b) 是二维均值和 2 *2 不确定点a (resp. b)的协方差矩阵。

最佳答案

我最终使用了自定义距离:

def my_mahalanobis_distance(x, y):
'''
x: array of shape (4,) x[0]: mu_x_1, x[1]: mu_x_2,
x[2]: cov_x_11, x[3]: cov_x_22
y: array of shape (4,) y[0]: mu_ y_1, y[1]: mu_y_2,
y[2]: cov_y_11, y[3]: cov_y_22
'''



return sp.spatial.distance.mahalanobis(x[:2], y[:2],
np.linalg.inv(np.diag(x[2:])
+ np.diag(y[2:])))

因此一个点有4个特征:

  • xy 坐标
  • xy 方差(协方差矩阵在我的例子中是对角线)

关于python - 具有不确定点的最近邻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41488381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com