Формат CSV для алгоритмов машинного обучения OpenCV - PullRequest
3 голосов
/ 10 февраля 2012

Алгоритмы машинного обучения в OpenCV используют данные, считанные в формате CSV.См. Например этот файл cpp .Данные считываются в класс машинного обучения OpenCV CvMLData с использованием следующего кода:

CvMLData data;
data.read_csv( filename ) 

Однако, по-видимому, нет доступной документации по требуемому формату для файла CSV.Кто-нибудь знает, как должен быть организован CSV-файл?

Другие (не Opencv) программы, как правило, имеют строку для каждого примера обучения и начинаются с целого числа или строки, обозначающей метку класса.

1 Ответ

2 голосов
/ 24 февраля 2012

Если я читаю источник для этого класса , в частности функцию str_to_flt_elem, и документацию класса , я заключаю, что допустимые форматы для отдельных элементов в файле:

  1. Все, что может быть проанализировано с удвоением по strod
  2. Знак вопроса (?) Или пустая строка для обозначения пропущенных значений
  3. Любая строка, которая не разбирается на двойное число.

Пункты 1 и 2 действительны только для функций. все, что соответствует пункту 3, считается меткой класса, и, насколько я могу судить, порядок элементов не имеет значения. Функция read_csv автоматически присваивает каждому столбцу в csv-файле правильный тип, и (если вы хотите) вы можете переопределить метки с помощью set_response_index . В качестве разделителя вы можете использовать значение по умолчанию (,) или установить его так, как вам нравится, перед вызовом read_csv с помощью set_delimiter (если вы не используете десятичную точку).

Так что это должно работать, например, для 6 точек данных в 3 классах с 3 объектами на точку:

A,1.2,3.2e-2,+4.1
A,3.2,?,3.1
B,4.2,,+0.2
B,4.3,2.0e3,.1
C,2.3,-2.1e+3,-.1
C,9.3,-9e2,10.4

Вы можете переместить свою текстовую метку в любой столбец или даже иметь несколько текстовых меток.

...