2013-09-16 4 views
1

Я участвую в проекте, который мне нужен для запуска различных экспериментов с разными настройками. Поскольку каждый эксперимент занимает 2 дня, чтобы закончить, мне нужно хранить столько информации, сколько возможно для последующего анализа, а именно:лучший способ чтения/записи результатов экспериментов

learner(string)/Kernel(string)/gamma (float)/features(string)/train_size(int)/test_size(int)/train_Index(vector<int>)/test_index(vector<int>)/ predictions (array of pointers(float))/ run_time (float) 

я должен иметь возможность добавить файл как well.One способ, который будет хранить все в текстовом файле со специальным форматом и читайте его позже, но он медленный, а не дружественный к памяти (мне нужно запустить около 500-1000 экспериментов). Другой способ - использовать XML-файл, который упрощает чтение файла. Но все же я не уверен, что это лучший способ. Могу дать мне несколько советов (или даже несколько примеров)?

+1

храните его в текстовом файле, если эксперименты занимают 2 дня, сохранение файла не будет проблемой. другим предложением будет DB –

+0

Что такое 'learner (string)/Kernel (string)/gamma (float)/features (string)/train_size (int)/test_size (int)/train_Index (вектор )/test_index (вектор )/прогнозы (массив указателей (float))/run_time (float) 'означает? – Olumide

+0

@Olumide Это просто показывает материал, который мне нужно хранить вместе с их форматом. – Moj

ответ

0

Я рекомендую писать текстовые файлы в виде вкладок в отдельности. Использовать другой разделитель для элементов списка (например, ',' или ';')

Это a сравнительно небольшое накладное пространство и сложность (лично мне нравится печатать результаты экспериментов, выполняемых в C++, в файлы и анализировать их в python, который имеет удивительную встроенную поддержку таких вещей, как чтение строк и разделение строк на списки в заданных разделителях, но все языки предлагают это с более или менее коротким синтаксисом, и вы даже можете записать его сами в нескольких строках).

Он также должен быть быстрым, но если вы тренируетесь и работаете с svm, запись и чтение выходных данных в любом случае будут безрезультатными.

Существует очень мало преимуществ при использовании xml или т. П. Сильные стороны таких форматов заключаются в том, что они позволяют заменять файлы, применять правила через схему и т. Д. Вы также можете дать имена для каждого атрибута. Но если это только ваши эксперименты, вам действительно не нужны эти функции. Вы узнаете, какой столбец соответствует тому, что.

Вкладка разделенных файлов имеет еще одно большое преимущество. Вы можете использовать программы GNU для доступа к данным и быстрого поиска: cut/sed/grep/etc работают красиво, а не с xml.

+0

Это именно то, что мне нужно сделать. Сохраните результат и проанализируйте с помощью python. Я просто хотел убедиться, что это правильный путь. Спасибо – Moj

+1

Может быть полезно отметить, что они обычно называются CSV-файлами. Вы даже можете импортировать их в Excel или аналогичные офисные программы. – user694733

+0

Я стараюсь избегать вызова разделенных разделов файлов CSV - они не разделяются запятой. –

Смежные вопросы