Encog Neural Network - 如何实际运行测试数据

时间:2015-07-21 20:09:54

标签: machine-learning artificial-intelligence neural-network encog

我已经能够训练网络,并将其训练到我想要的最小错误......

我实际上并没有看到任何地方,即使我查看了指南,如何在新数据上测试经过培训的网络......我将部分训练数据分开,以便我可以测试网络&# 39; s结果是未经训练的数据,因为我使用它进行分类。这是我已经获得的代码,不知道如何处理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?
    }

(我的测试数据显然标有正确的分类......)

1 个答案:

答案 0 :(得分: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,以便它返回分类输出,当然。 对于回归,您可以执行类似的操作,但不是映射,而是在两个输出之间查看某个距离度量以计算出错误。