将CSV表转换为Redis数据结构

时间:2017-07-27 13:28:19

标签: python csv dataframe redis distributed

我正在寻找一种方法/数据结构来实现二进制匹配器的评估系统以进行验证。

该系统将分布在多台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。但是,我不知道这样的系统,并会感激建议。

1 个答案:

答案 0 :(得分:1)

您需要了解有关Redis的更多信息,以解决您的挑战。我建议您尝试https://try.redis.io,然后再考虑一下您的问题。

TL; DR - Redis不是表格数据" store,它是一个用于数据结构的商店。您可以以最佳方式使用为您的查询提供服务的数据结构。

IMO您想要做的事实上是保留较慢的存储空间中的大数据(无论多大?),只需将模型(FMR曲线计算?异常值?)存储在Redis中。这几乎可以肯定地使用现有的核心数据结构(在这种情况下可能是哈希和排序集),但使用新的模块API可能更加优化。请参阅redis-ml模块,作为在Redis上提供机器学习模型的示例(也许您的用例将是一个很好的补充;)

免责声明:我在Redis Labs工作,Redis Labs是开源Redis的主页,也是利用它的商业解决方案提供商,包括上述模块(开源,AGPL许可)。