使用java的MultiThreaded CrossValidation

时间:2016-03-26 20:14:24

标签: java machine-learning weka

我使用Java Threads来实现Weka CrossValidation(10倍CV),但很难理解平均部分在方法hover中的位置。

我需要确保每个线程都有自己的错误率副本,然后在线程完成执行时执行平均。

1 个答案:

答案 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