API пакета Python bob - как форматировать входные данные
Я пытаюсь использовать пакет bob, который установлен на моей Ubuntu с помощью Conda; Однако при использовании любого из API-интерфейсов измерений, таких как bob.measure.eer_threshold
появляется следующая ошибка. Я подготовил данные в массиве 1D, но ошибка все еще существует. Я также пытался передать чистый одномерный массив функции, но он не работает. Ошибка:
Traceback (most recent call last): File "Test_bob.py", line 29, in <module>
threshold = bob.measure.eer_threshold(negatives, positives) ValueError: cannot convert `numpy.ndarray' which doesn't behave (memory contiguous, aligned, C-style, minimum 1 and up to 4 dimensions) into a `bob.blitz.array'
Это код:
import bob
import bob.measure
import bob.blitz
import math
import numpy
from matplotlib import pyplot
fImpostor= open("Impostor.txt", "r")
fGenuine= open("Genuine.txt", "r")
positive_scores = []
negative_scores = []
for line in fImpostor:
ImpScore = line.split()
negative_scores.append(ImpScore[0])
fImpostor.close()
for line in fGenuine:
GenScore = line.split()
positive_scores.append(GenScore[0])
fGenuine.close()
positives = numpy.array(positive_scores)
negatives = numpy.array(negative_scores)
threshold = bob.measure.eer_threshold(negatives, positives)
FAR, FRR = bob.measure.eer_rocch(negatives, positives)
И это Genuine.txt
файл:
8873
2601
2554
11872
3867
4048
6983
3833
3988
5321
2761
2139
8498
2719
3128
3790
2937
2394
и Impostor.txt
:
2941
3486
4051
3416
2176
2222
1758
1856
2283
3491
3248
3159
4027
1300
2102
1437
1420
1776
4025
3888
2522
3557
Пожалуйста, помогите мне, как отформатировать и подготовить данные для таких методов bob API.
1 ответ
Решение
Эта функция ожидает одномерный массив чисел с плавающей точкой, но вы на самом деле читаете ваши данные в виде строк. Кроме того, вместо самостоятельной загрузки данных, вы можете, например, использовать numpy.loadtxt, чтобы сделать это за вас.