Text
librec可以直接读取以文本形式保存的数据. 数据以n3或者n 4的形式进行保存. 每一行为一个user-item-rating 或者 user-item-rating-date实体对. 不同栏之间使用空格或逗号进行分割.示例数据如下: User-Item-Rating
1050 215 3
1050 250 2
1050 251 2.5
User-Item-Rating-Date
1 1 2 97
1 1 3 75
1 1 4 76
1 4 3 87
1 5 4 96
其中User-Item-Rating简写为UIR, User-Item-Rating-Date简写为UIRT. 当使用Text格式的数据来作为输入时, 对以下配置项进行配置
data.model.format=text
data.column.format=UIR #or UIRT
Arff
当数据的关系列等于或者超过4维时,推荐使用Arff格式来进行保存.在ARff的头部声明定义数据集的名称. 之后分行声明每一列的名称以及数据类型. 示例数据如下:
@RELATION user-movie
@ATTRIBUTE user NUMERIC
@ATTRIBUTE item NUMERIC
@ATTRIBUTE time NUMERIC
@ATTRIBUTE rating NUMERIC
@DATA
1,1,97,2
1,1,75,3
1,1,76,4
1,4,87,3
1,5,96,4
1,6,78,3.5
1,7,1,3.5
Arff格式中以%开头为注释行, 声明的标示(@RELATION, @ATTRIBUTE, @DATA)为大小写不敏感.具体Arff数据格式的细节请参阅Attribute-Relation File Format
在LibRec中使用Arff格式的数据需要进行的配置如下
data.model.format=arff
下一节:DataModel类用于对推荐算法所使用的数据进行准备. 主要完成对不同类型数据的读取, 组织结构 ,分割数据集, 根据配置项对数据进行二值化处理等. 相应的, 定义为DataModel类型的变量在指向子类的方法时, 需要传出Configuration类型的对象. 其中读取文件路径等配置项可以使用setConf来设置. 相应的, 在Java代码中, 可以根据读取数据类型直接生成对应的DataModel. 生成构造器的参数为Configuration的对象. 之后调用buildDataModel进行读取和分割.具体的数据读取过程与分割过程需要在调用buildDataModel之前通过setConf的方式传入对象中.