猿问

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

我有两组不同的 xy 坐标要比较。这些集合的大小不同,但我想计算两者之间的某种相似性指数。

例子:

    Set1 = [(1,2), (3,6), (7,8)] 
    Set2 = [(2,2), (3,5)]

我正在寻找的度量/算法的目标是评估预测算法在找到相对于已知地面实况点集的点时的“准确性”。

我曾尝试采用相对于最近预测点的地面实况点的最小距离,但作为一个指标无法量化/惩罚过度预测的错误。

示例 我要比较的两个数据集的散点图


萧十郎
浏览 96回答 1
1回答

慕尼黑的夜晚无繁华

使用您选择的内核估计地面实况和预测数据集的密度。选择哪个内核取决于领域;盒内核或 RBF 可能是一个合理的选择。计算这些密度之间的差异。散度的概念再次取决于您,均方距离或 KL 散度可能会起作用。使用框核和均方实现:from scipy.signal import convolve2d# constants: don't forget to replace with your own valuesx_width, y_width = 10, 10kernel_width = 3gt_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 1gt_field[list(zip(*Set1))] = 1prediction_field[list(zip(*Set2))] = 1# using box kernel as the simplest onekernel = np.ones((kernel_width, kernel_width)) / kernel_width ** 2# apply kernel - now we have densitiesgt_field = convolve2d(gt_field, kernel)prediction_field = convolve2d(prediction_field, kernel)# calculate mean squared errormse = ((gt_field - prediction_field) ** 2).mean()我很确定有一种更有效的方法来实现它,但即使这样也应该像示例图片那样在几百个点上工作。
随时随地看视频慕课网APP

相关分类

Python
我要回答