c - 误报概率图和 ROC 曲线

标签 c implementation probability false-positive roc

如何为使用视频的对象检测应用绘制每个窗口的误报率与未命中率(或误报概率)和 ROC(接收器操作曲线)的图表?如何确定误报和命中的数量?一个例子是很有用。

最佳答案

它很简单。将所有真正 (H0) 值存储在一个数组中,将所有真负 (H1) 值存储在另一个数组中。

对两个列表进行排序。

从两个列表中找出最高值,从两个列表中找出最低值。将范围除以适当的数字(例如 1000),这将是您的步骤。

现在按步长值从最小到最大步进。

对于每个评估值,找到 h0 和 h1 数组中大于该值的点。将此索引除以 h0/h1 数组中的值数并乘以 100(给您一个百分比)。

  • 错误拒绝 (fr) = h0 指数百分比。
  • 错误接受 (fa) = 100 - (h1 指数百分比)。

  • 绘制 fa 反对,100 - fr。

    要计算 EER,您需要找到上面计算的 fr 和 fa 之间的最小距离。
    float diff = fabsf( fr - fa );
    if ( diff < minDiff )
    {
        minDiff = diff;
        minFr   = fr;
        minFa   = fa;
    }
    

    然后最后 EER 计算如下:
    float eer = (minFr + minFa) / 2.0f;
    

    编辑 :您获得的 H0 和 H1 值只是表示您的匹配正确的“可能性”的分数值。您必须在某处计算这些数字,因为您必须根据此分数决定是否识别出您的对象。

    H0 列表是您在确定匹配项时获得的分数。 H1 列表是您在确定不匹配时获得的分数。

    关于c - 误报概率图和 ROC 曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14670855/

    相关文章:

    c - 将两个矩阵相乘时获取地址作为输出

    c - 当我尝试使用 ./secondo 执行此代码时,我收到此错误

    java - 为每个列表项创建自定义 View 的最佳方法

    java - 带概率的随机数

    c - 无法将 char 指针传递给 gethostname (Linux)

    c - 如何防止 dlopened 库使用某些 libc 函数?

    algorithm - 从伪代码实现循环

    java - 使用java的数组和链表的堆接口(interface)

    三角数组中的 Java 偏置随机数

    node.js - 如何在不使其不唯一/不可猜测的情况下缩短 UUID V4