0

我已经能够对网络进行训练,并得到它的培训降到最小错误我想...Encog神经网络 - 如何实际运行测试数据

我实际上没有看到任何地方,甚至当我浏览指导手册时,如何测试经过训练的网络上的新数据......我将部分训练数据分开,以便我可以在未经训练的数据上测试网络的结果,因为我将它用于分类。这是我得到的代码,不确定如何处理MLData输出。对于分类,我只想将输出神经元的值设为最高...又名,最有可能是正确的分类节点。

MLDataSet testingSet = new BasicMLDataSet(testingTraining, testingIdeal); 
    System.out.println("Test Results:"); 
    for(MLDataPair pair: testingSet) { 
     final MLData output = network.compute(pair.getInput()); 
     //what do I do with this output? 
    } 

(我的测试数据明显标注了正确的分类......)

回答

2

那么它取决于你手头有什么问题,但这个想法是,你的输出应尽可能接近到测试数据集输出,所以我建议比较一下。例如,如果这是一个分类任务,那么您的输出将是可迭代的,您应该能够计算出所选输出类是什么,并将其与目标进行比较。你可以制定错误分类率,或者任何其他准确度(精确度,召回率,F1分数)。因此,像:

int bad = 0; 
for(MLDataPair pair: testingSet) 
{ 
    MLData output = network.compute(pair.getInput()); 
    if(outputClass(output) != outputClass(pair.getIdeal())) 
     bad++; 
} 
double misclassificationRate = bad/testingSet.size() 

你将不得不适当地写OutputClass类,以便它返回过程的分类输出。 对于回归,您可以做类似的事情,但是您可以使用两种输出之间的距离度量来代替映射,以找出错误。