机器学习数据结构输入的最佳实践

时间:2011-06-28 05:10:21

标签: c++ artificial-intelligence machine-learning

我正在为自己的一些工作开发一个C ++机器学习库,我对表示输入数据的最佳实践感到好奇。现在,我正在考虑使用一个DataManager类来处理I / O操作,以便从文件,流中读取数据等。在开发中,我意识到还需要创建类来管理功能标签(与输入数据相关联)和类标签(在训练数据的情况下)。

因此,我的实现有一个类,它将文件中的数据(我正在使用UCI机器学习库)读入boost :: variant对象。 DataManager类重载运算符>>这样我就可以从提供的行中读取每个以逗号分隔的特征值;它的特征值是'?',它输入struct t_missing {}。

对于类/功能管理器,我认为维护一个功能/类名称的链接列表以及每个功能/类名称的实例数量是合适的。

无论如何,这只是我对这样一个课程的初步想法,我很想听听关于实施的其他一些想法/建议。显示代码不是必需的;我大部分只是想听听我应该考虑的其他事情。

谢谢!

1 个答案:

答案 0 :(得分:1)

稀疏数据存在一些学习问题,即具有大量可能特征的数据,其中大部分都是零。在这种情况下,仅存储非零的特征会更有效。

这通常是SVM库的情况,例如LibSVM,它将向量存储为(feature_index,feature_value)对的列表。例如。他们将用于矢量的格式:

 [0, 1, 0, 0, 1, 0, 0, 1]

将是:(索引从1开始)

 2:1 5:1 8:1