作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个二维点集 A
和 B
。我想为 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个特征:
x
和y
坐标x
和 y
方差(协方差矩阵在我的例子中是对角线)关于python - 具有不确定点的最近邻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41488381/
我是一名优秀的程序员,十分优秀!