如何在Encog中评估预测神经网络

我们正在创建一个神经网络,用于预测使用几个台风参数作为输入的台风发生.到目前为止,我们已经能够使用Encog 3.2生成数据并训练神经网络.现在,我们需要评估培训结果.

我们使用ForestCover项目(在Encog 3.2示例中)作为参考,但是该项目的评估代码用于分类神经网络.因此,我们无法在所述项目代码之后评估我们的神经网络.

我们还检查了PredictMarket项目(在Encog 3.2示例中),因为它是一个预测神经网络.但是我们在使用MLData方面遇到了困难.

MLData output = network.compute(inputData);

我们想要提取输出的内容,并将其与evaluate.csv的内容进行比较,以进行神经网络评估.

有没有办法可以将输出变量提取/转换为标准化值,然后我们可以将其与标准化的evaluate.csv进行比较?

要么

有没有办法可以修改ForestCover Evaluate.java文件以便能够评估预测神经网络?

谢谢.

最佳答案 这是一个C#示例(Java应该类似),它会写出.csv文件(TestResultsFile),其中包含非规范化的预期和实际结果,因此您可以将它们与Excel图形进行比较.

var evaluationSet = (BasicMLDataSet)EncogUtility.LoadCSV2Memory(Config.EvaluationNormalizedFile.ToString(),
    network.InputCount, network.OutputCount, true, CSVFormat.English,
        false);

var analyst = new EncogAnalyst();
analyst.Load(Config.NormalizationAnalystFile);

// Change this to whatever your output field index is
int outputFieldIndex = 29;

using (var resultsFile = new System.IO.StreamWriter(Config.TestResultsFile.ToString()))
{
    foreach (var item in evaluationSet)
    {
        var normalizedActualOuput = (BasicMLData)network.Compute(item.Input);
        var actualOutput = analyst.Script.Normalize.NormalizedFields[outputFieldIndex].DeNormalize(normalizedActualOuput.Data[0]);

        var idealOutput = analyst.Script.Normalize.NormalizedFields[outputFieldIndex].DeNormalize(item.Ideal[0]);


        var resultLine = String.Format("{0},{1}", idealOutput, actualOutput);
        resultsFile.WriteLine(resultLine);

    }
}

其中大部分来自Abishek Kumar’s Pluralsight Course的想法

如果您真的想要比较Normalized值,只需删除两个“Denormalize”调用.

点赞