如何比较配对计数数据?

数据挖掘 机器学习 Python 熊猫 准确性
2021-10-09 23:29:23

我正在使用一种机器学习方法来计算图像中的汽车。我有一个预测数据集,它是机器学习方法的预测输出和一个配对的“真实”数据集,它是人类浏览每张图像并计算汽车数量的结果。

以下是数据集的样例(请注意,实际数据集有 2500 个配对样本):

import pandas as pd

d = {'true': [0,0,0,1,1,0,1,0,0,0,0,0,0,0,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], 
     'predicted': [0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1]}
df = pd.DataFrame(data=d)

    true  predicted
0      0          0
1      0          0
2      0          0
3      1          0
4      1          0
5      0          0
6      1          1
7      0          0
8      0          0
9      0          0
10     0          0
11     0          0
12     0          0
13     0          0
14     4          2
15     2          2
16     0          0
17     0          0
18     0          0
19     0          0
20     0          0
21     0          0
22     0          0
23     0          0
24     0          1
25     0          0
26     0          0
27     0          0
28     0          0
29     0          0
30     0          0
31     0          0
32     1          1

我正在寻找一种向观众展示预测方法的方法,以便他们查看预测是否在统计上与真实观察结果相同,并可视化数据中的任何趋势(例如,预测方法有过度或不足预测的趋势) . 如果这些是分类数据,我会使用混淆矩阵,但是,我不确定如何处理这些以 0 为重的成对离散数据集。

我可以采取什么方法来统计比较预测数据集和真实数据集?

2个回答

为了可视化成对的一维数据,即真实计数与预测计数,您可以使用ggpaired 之类的东西。

您还可以可视化差异的分布,其中每个样本是真实计数与其预测值之间的差异;排除零差异可以更好地突出任何偏差。

对于统计检验,您可以使用Wilcoxon 符号秩检验( python ),或者如果差异分布(真实计数 - 预测计数)围绕均值不对称,则可以使用符号检验。

值得注意的是,当提供足够大的样本时,对于任意小的差异,统计检验可能会导致“不一样”(拒绝“相同”的原假设),因此请注意“显着”的解释例如,陈述“预测计数低估了真实计数”可能具有统计显着性,但平均差为 0.05。尽管这种差异在统计上是显着的,但是,根据任务的不同,它可能可以忽略不计因此,例如,在统计检验的同时报告差异的“平均值±标准差”将有助于更好地解释“显着性”。另外,看看这篇关于效果大小的帖子

您可以使用一个简单的误差度量 (real.peoplepredicted.people)2+(real.carspredicted.cars)2,您正在处理的问题具有此目标函数作为已解决的问题。

实际上,算法将此度量作为其目标函数。