Ich suche eine Methode/Datenstruktur um ein Auswertesystem für einen binären Matcher für eine Verifikation zu implementieren.CSV Tabelle in Redis Datenstrukturen umwandeln
Dieses System wird auf mehrere PCs verteilt.
Grundidee ist an vielen Orten über das Internet beschrieben, zum Beispiel in diesem Dokument: https://precisebiometrics.com/wp-content/uploads/2014/11/White-Paper-Understanding-Biometric-Performance-Evaluation.pdf
Diese Matcher, dass ich mich entschieden, zwei Datenelemente als Eingabe verwendet und berechnet eine Abgleichswert, die ihr widerspiegelt Ähnlichkeit (dann wird eine Schwelle gewählt, abhängig von falscher Übereinstimmung/falscher Nicht-Übereinstimmungsrate).
Derzeit speichere ich Partituren zusammen mit Etiketten in CSV-Datei übereinstimmt, wie folgt vor:
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
...
(ich eine markierte Datenbank haben)
Dann laufe ich ein Python-Skript, dass diese Lasten Tabelle in Pandas DataFrame und berechnet die FMR/FNMR-Kurve, ähnlich der in Abbildung 2 im obigen Link gezeigten Kurve. Die Verarbeitung ist ziemlich einfach, man sortiert einfach den Datenrahmen, scannt Zeilen von oben nach unten und berechnet die Anzahl der Betrüger/Experten in Zeilen über und unter jeder Zeile.
Das System sollte auch das Auffinden von Ausreißern unterstützen, um die Verbesserung des Matching-Algorithmus zu unterstützen (Labels von Datenelementpaaren, abnormal große echte Scores oder ungewöhnlich kleine Impostor-Scores). Dies ist auch ziemlich einfach mit den DataFrames (sortiere und sortiere Kopfzeilen).
Jetzt denke ich darüber nach, wie die Vergleichsdaten im RAM statt CSV-Dateien auf der Festplatte gespeichert werden.
Ich denke Redis in dieser Hinsicht: Datenmenge ist groß, und mehrere PCs sind in Berechnungen beteiligt, und Redis verfügt über eine Master-Slave-Funktion, die es ermöglicht, Daten schnell über das Netzwerk zu synchronisieren, so dass mehrere PCs genau haben Klone von Daten. Es ist auch kostenlos.
Allerdings scheint Redis nicht sehr gut für die Speicherung solcher Tabellendaten zu passen.
Daher muss ich Datenstrukturen und Algorithmen für ihre Verarbeitung ändern. Es ist jedoch nicht offensichtlich für mich, wie diese Tabelle in Redis-Datenstrukturen übersetzt werden kann.
Eine andere Option wäre die Verwendung eines anderen Datenspeichersystems anstelle von Redis. Ich kenne solche Systeme jedoch nicht und bin dankbar für Vorschläge.
Sie könnten ein 'DefaultDict' aus [redis-collections] (http://redis-collections.readthedocs.io/en/stable/api.html#redis_collections.dicts.DefaultDict) verwenden - jeder Schlüssel könnte eine Liste speichern von Werten. – bbayles