为了账号安全,请及时绑定邮箱和手机立即绑定

如何比较两组不同长度的 xy 坐标?

如何比较两组不同长度的 xy 坐标?

萧十郎 2022-07-12 18:17:49
我有两组不同的 xy 坐标要比较。这些集合的大小不同,但我想计算两者之间的某种相似性指数。例子:    Set1 = [(1,2), (3,6), (7,8)]      Set2 = [(2,2), (3,5)]我正在寻找的度量/算法的目标是评估预测算法在找到相对于已知地面实况点集的点时的“准确性”。我曾尝试采用相对于最近预测点的地面实况点的最小距离,但作为一个指标无法量化/惩罚过度预测的错误。示例 我要比较的两个数据集的散点图
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

  1. 使用您选择的内核估计地面实况和预测数据集的密度。选择哪个内核取决于领域;盒内核或 RBF 可能是一个合理的选择。

  2. 计算这些密度之间的差异。散度的概念再次取决于您,均方距离或 KL 散度可能会起作用。

使用框核和均方实现:

from scipy.signal import convolve2d


# constants: don't forget to replace with your own values

x_width, y_width = 10, 10

kernel_width = 3


gt_field = np.zeros((x_width, y_width))

prediction_field = gt_field.copy()

# split Set1 into two lists of x and y coordinates

# then set these points to 1

gt_field[list(zip(*Set1))] = 1

prediction_field[list(zip(*Set2))] = 1


# using box kernel as the simplest one

kernel = np.ones((kernel_width, kernel_width)) / kernel_width ** 2


# apply kernel - now we have densities

gt_field = convolve2d(gt_field, kernel)

prediction_field = convolve2d(prediction_field, kernel)


# calculate mean squared error

mse = ((gt_field - prediction_field) ** 2).mean()

我很确定有一种更有效的方法来实现它,但即使这样也应该像示例图片那样在几百个点上工作。


查看完整回答
反对 回复 2022-07-12
  • 1 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信