我使用Java Threads来实现Weka CrossValidation(10倍CV),但很难理解平均部分在方法hover
中的位置。
我需要确保每个线程都有自己的错误率副本,然后在线程完成执行时执行平均。
答案 0 :(得分:0)
从你在这里描述的任何方法来看,你必须尝试多线程概念。
您必须创建将接受您的模型和测试数据集的线程。
EvaluateThread t1 = new EvaluateThread(threadName,model,testDataset1);
EvaluateThread t2 = new EvaluateThread(threadName,model,testDataset2);
EvaluateThread t3 = new EvaluateThread(threadName,model,testDataset3);
然后创建synchronized方法,以便每个线程可以独立访问该方法。
像这样的东西
public synchronized double calculateError(model, dataset){
// do your stuff for e.g. calculate error
return error;
}
最后计算从每个线程获得的平均误差。 有关同步方法的详细信息,请查看此link。