2016-01-14 5 views
4

Мы создаем нейронную сеть для , прогнозируя появление тайфунов, используя несколько параметров тайфуна в качестве входных данных. До сих пор мы могли генерировать данные и тренировать нейронную сеть, используя Encog 3.2. Сейчас нам нужно оценить результаты обучения.Как оценить интеллектуальную нейронную сеть в Encog

Мы используем проект ForestCover (в Encog 3.2 примеров) в качестве эталона, однако оценки кода данного проекта является для классификации нейронной сети. Таким образом, мы не можем оценить нашу нейронную сеть после кода проекта.

Мы также проверили проект PredictMarket (в примерах Encog 3.2), поскольку это интеллектуальная нейронная сеть. Но нам трудно использовать MLData.

MLData output = network.compute(inputData); 

Мы хотим, чтобы извлечь содержимое вывода и сравнить его с содержимым evaluation.csv для оценки нейронной сети.

Есть ли способ, мы можем извлечь/преобразовать выходной переменную в нормализованное значение, которое мы можем сравнить с нормированной evaluation.csv?

или

Есть ли способ, мы можем изменить ForestCover Evaluate.java файла, чтобы иметь возможность оценить прогностическую нейронную сеть?

спасибо.

+0

Вы можете уточнить, как вы нормализировали свои данные? –

+0

@YuraZaletskyy Мы нормировали наши данные, используя встроенную генерацию данных в примере ForestCover в Encog 3.2 через OutputFieldRangeMapped. Он автоматически делит данные (75% -25%) на файлы training.csv и evaluation.csv. –

ответ

1

Вот пример 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

Если вы действительно хотите сравнить нормированные значения, просто удалите два вызова «Денормализовать».

+0

Большое спасибо за это понимание! Мы попытаемся выполнить этот код, и мы обновим результаты. –

Смежные вопросы