所以,我正在构建一个算法,我只需要执行交叉折叠任务,而不是整个评估器。这是我的代码:
File file = new File("lenskitreadyDatabase.csv");
EventFormat eventFormat = new CustomFormatter();
DataSource dataSource = new GenericDataSource("split", new TextEventDAO(file, eventFormat));
CrossfoldTask task = new CrossfoldTask("cross10");
task
.setHoldout(5)
.setSource(dataSource)
.setPartitions(FIRST_CROSSFOLD)
.setProject(new EvalProject(new Properties()));
List<TTDataSet> l = task.perform();
l.stream().forEach(v -> {
System.out.println(v.getName());
System.out.println(v.getTestData().getEventDAO().streamEvents().hasNext());
});
Lenskit 正在创建我所有的训练测试文件,但它们都是空的。我已经使用 forEach 方法检查错误是否是在将文件写入磁盘时出现的,但显然不是,因为这是我得到的日志System.out.printLn()
:
cross10.0
false
cross10.1
false
cross10.2
false
cross10.3
false
cross10.4
false
cross10.5
false
cross10.6
false
cross10.7
false
cross10.8
false
cross10.9
false
我还没有找到太多关于只运行交叉折叠任务而不是整个评估器的信息,所以如果你能解释一下,那就太棒了。谢谢