1 回答
TA贡献1864条经验 获得超6个赞
使用您选择的内核估计地面实况和预测数据集的密度。选择哪个内核取决于领域;盒内核或 RBF 可能是一个合理的选择。
计算这些密度之间的差异。散度的概念再次取决于您,均方距离或 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()
我很确定有一种更有效的方法来实现它,但即使这样也应该像示例图片那样在几百个点上工作。
添加回答
举报