Java 如何评价Encog中的预测神经网络

Java 如何评价Encog中的预测神经网络,java,neural-network,encog,Java,Neural Network,Encog,我们正在创建一个神经网络,用几个台风参数作为输入来预测台风的发生。到目前为止,我们已经能够使用Encog 3.2生成数据并训练神经网络。现在,我们需要评估培训的结果 我们使用的是森林覆盖项目(在Encog 3.2示例中)作为参考,但所述项目的评估代码用于分类神经网络。因此,我们不能按照上述项目的代码来评估我们的神经网络 我们还检查了PredictMarket项目(在Encog 3.2示例中),因为它是一个预测神经网络。但是我们在使用MLData时遇到了困难 MLData output = net

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

我们使用的是森林覆盖项目(在Encog 3.2示例中)作为参考,但所述项目的评估代码用于分类神经网络。因此,我们不能按照上述项目的代码来评估我们的神经网络

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

MLData output = network.compute(inputData);
我们希望提取输出内容,并将其与神经网络评估的evaluation.csv内容进行比较

是否有一种方法可以将输出变量提取/转换为标准化值,然后与标准化求值.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);

    }
}
这其中很大一部分来自于


如果您真的想比较规范化值,只需删除“反规范化”的两个调用即可。

您能澄清一下您是如何规范化数据的吗?@Yurazaletsky我们使用Encog 3.2中ForestCover示例中的内置数据生成,通过OutputFieldRangeMapped对数据进行了规范化。它会自动将数据(75%-25%)分为training.csv和evaluation.csv文件。非常感谢您的深入了解!我们将尝试遵循此代码,并将更新您的结果。