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)

我也应该能够附加该文件。一种方法是将所有内容存储在具有特定格式的文本文件中并稍后阅读,但它很慢而且对内存不友好(我需要运行大约 500-1000 次实验)。另一种方法是使用 XML 文件,这使得读取文件更容易。但我仍然不确定最好的方法是什么。能给我一些提示(甚至更好的例子)吗?

4

1 回答 1

0

我建议以制表符分隔的方式写入文本文件。对列表项使用不同的分隔符(例如“,”或“;”)

这 a 在空间和复杂性方面的开销相对较小(我个人喜欢将在 c++ 中运行的实验结果打印到文件中并在 python 中分析它们,它具有很棒的内置支持,例如逐行读取和在给定分隔符处将字符串拆分为列表- 但是所有语言都提供或多或少的简短语法,您甚至可以自己编写几行代码)。

它也应该很快,但是如果您正在训练和运行 svm,那么无论如何,写入和读取输出在时间上都不是问题。

使用 xml 或类似格式的好处很少:此类格式的优点是它们允许交换文件、通过模式强制执行规则等。您还可以为每个属性指定正确的名称。但如果只是你的实验,你并不真的需要这些功能。你会知道哪一列对应什么。

制表符分隔的文件还有另一个很大的好处。您可以使用 GNU 程序来访问数据并快速查找内容:cut/sed/grep/etc 可以很好地工作,但它们不适用于 xml。

于 2013-09-16T10:45:59.733 回答