我正在寻找一种方法/数据结构来实现用于验证的二进制匹配器的评估系统。将CSV表转换为Redis数据结构
该系统将分布在多台PC上。
基本思路是,在许多地方在互联网上所描述的,例如,在本文档中:https://precisebiometrics.com/wp-content/uploads/2014/11/White-Paper-Understanding-Biometric-Performance-Evaluation.pdf
这个匹配,我正在测试,有两个数据项作为输入,并计算匹配分数,反映他们相似性(然后根据错误匹配/错误不匹配率选择阈值)。
目前我存储在CSV文件标签一起匹配得分,就像下面:
label1, label2, genuine, 0.1
label1, label4, genuine, 0.2
...
label_2, label_n+1, impostor, 0.8
label_2, label_n+3, impostor, 0.9
...
label_m, label_m+k, genuine, 0.3
...
(我有一个标记数据库)
然后我运行一个python脚本,即加载此表放入Pandas DataFrame并计算FMR/FNMR曲线,类似于上面链接中图2所示的曲线。处理过程非常简单,只需对数据帧进行排序,从上到下扫描行,并计算每行上下行上的冒名顶替者/ genuines的数量。
该系统还应该支持找到离群值以支持匹配算法改进(数据项对的标签,产生异常大的真实分数或异常小的冒充者分数)。使用DataFrames也很容易(只需排序并占据头部行)。
现在我正在考虑如何将比较数据存储在RAM中而不是HDD上的CSV文件中。
在这方面,我正在考虑Redis:数据量很大,并且有几台PC参与计算,Redis具有主从功能,可以通过网络快速同步数据,因此几台PC可以精确地数据克隆。 它也是免费的。
但是,Redis在我看来并不适合存储这样的表格数据。
因此,我需要更改数据结构和算法进行处理。 但是,对于我来说,如何将此表转换为Redis数据结构并不明显。
另一种选择是使用其他数据存储系统而不是Redis。但是,我不知道这样的系统,并会很乐意提供建议。
您可以使用[redis-collections]中的DefaultDict(http://redis-collections.readthedocs.io/en/stable/api.html#redis_collections.dicts.DefaultDict) - 每个键都可以存储列表值。 – bbayles