tipos redes programacion neuronales neuronal multicapa ejemplos curso java neural-network encog

java - redes - Cómo evaluar la red neuronal predictiva en Encog



tipos de redes neuronales (1)

Estamos creando una red neuronal para predecir la ocurrencia de tifones usando varios parámetros de tifones como entrada. Hasta ahora, hemos sido capaces de generar datos y entrenar la red neuronal usando Encog 3.2 . En este momento, tenemos que evaluar los resultados de la capacitación.

Estamos utilizando el proyecto ForestCover (en ejemplos de Encog 3.2) como referencia, sin embargo, el código de evaluación de dicho proyecto es para una red neuronal de clasificación. Por lo tanto, no podemos evaluar nuestra red neuronal siguiendo el código de dicho proyecto.

También verificamos el proyecto PredictMarket (en ejemplos de Encog 3.2) ya que es una red neuronal predictiva. Pero estamos teniendo dificultades para usar MLData.

MLData output = network.compute(inputData);

Queremos extraer el contenido del resultado y compararlo con el contenido de la evaluación.csv para la evaluación de redes neuronales.

¿Hay alguna manera de que podamos extraer / convertir la variable de salida en un valor normalizado que luego podemos comparar con la evaluación.csv normalizada?

o

¿Hay alguna manera de que podamos modificar el archivo ForestCover Evaluate.java para poder evaluar una red neuronal predictiva?

Gracias.


Aquí hay un ejemplo de C # (Java debe ser similar) que escribe un archivo .csv (TestResultsFile) con los resultados esperados y reales des-normalizados para que pueda compararlos con un gráfico de 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); } }

Gran parte de esto proviene de ideas del Curso Pluralsight de Abishek Kumar

Si realmente desea comparar valores normalizados, simplemente elimine las dos llamadas a "Denormalize".