如何使用 bob.measure.load.split()

How to use bob.measure.load.split()

我是一名主修机器学习的学生,我对身份验证很感兴趣。 我对你们的图书馆很感兴趣,因为我想计算 EER。

抱歉这个基本问题,但请告诉我有关 bob.measure.load.split() 的信息。

第一列是正确的标签,第二列是模型的预测分数,这个要求的文件格式是否正确?

喜欢

# file.txt    
|label|prob |
| -1  | 0.3 |
| 1   | 0.5 |
| -1  | 0.8 |

...

另外,要实际计算EER,是否应该按照以下步骤进行?

neg, pos = bob.measure.load.split('file.txt')
eer = bob.measure.eer(neg, pos)

此致。

计算 EER 有两种选择 bob.measure:

  1. 使用 Python API 使用 numpy 数组计算 EER。
  2. 使用命令行应用程序生成错误率(包括 EER)和图表

使用 Python API

首先,您需要将分数加载到内存中并将它们分成分数。 例如:

import numpy as np
import bob.measure
positives = np.array([0.5, 0.5, 0.6, 0.7, 0.2])
negatives = np.array([0.0, 0.0, 0.6, 0.2, 0.2])
eer = bob.measure.eer(negatives, positives)
print(eer)

这将打印 0.2。您需要注意的是,您的正面比较分数高于负面比较分数。那就是你的模型应该对正样本得分更高。

使用命令行

bob.measure 还附带了一套命令行命令,可以帮助您获得错误率。要使用命令行,您需要将分数保存在文本文件中。此文件由两列 组成,其中列由 space 分隔。例如,同一示例的乐谱文件为:

$ cat scores.txt
1 0.5
1 0.5
1 0.6
1 0.7
1 0.2
-1 0.0
-1 0.0
-1 0.6
-1 0.2
-1 0.2

然后你会打电话给

$ bob measure metrics scores.txt
[Min. criterion: EER ] Threshold on Development set `scores.txt`: 3.500000e-01
================================  =============
..                                Development
================================  =============
False Positive Rate               20.0% (1/5)
False Negative Rate               20.0% (1/5)
Precision                         0.8
Recall                            0.8
F1-score                          0.8
Area Under ROC Curve              0.8
Area Under ROC Curve (log scale)  0.7
================================  =============

好的,它没有准确地打印 EER,但是 EER = (FPR+FNR)/2

使用bob.bio.base命令行

如果您的分数是生物识别实验的结果, 那么您想以 bob.bio.base 的 4 或 5 列格式保存您的分数。 请参阅 https://gitlab.idiap.ch/bob/bob.bio.base/-/blob/3efccd3b637ee73ec68ed0ac5fde2667a943bd6e/bob/bio/base/test/data/dev-4col.txt and documentation in https://www.idiap.ch/software/bob/docs/bob/bob.bio.base/stable/experiments.html#evaluating-experiments 中的示例 然后,您将调用 bob bio metrics scores-4-col.txt 以获取与生物识别相关的指标。