9. Evaluate the model on the training set
Bei der Erzeugung des Evaluation-Objektes wird dem Konstruktor die numberClasses-Variable übergeben, deren Wert besagt, dass es 3 Klassifikationsarten bzw. Immobilien gibt.
Die Methode output(…) des MultiLayerNetwork-Objektes namens model liefert der Variablen (Objektreferenz) namens output eine Referenz auf ein NDArray-Objekt in Abhängigkeit von den Merkmalen (features) der Trainingsdaten (diese Daten waren ja auch die Grundlage für das Lernen). Die Klasse NDArray implementiert das Interface INDArray. Im Endeffekt stehen in output die realen (berechneten) Ausgangswerte für die Trainingsdaten.
Mit der Methode eval(…) werden diese Wert mit den gewünschten Werten (targets), die auch in einem NDArray-Objekt gekapselt sind, verglichen und statistische Daten berechnet, wie Accuracy, Precision, Recall, F1-Score und Confusion-Matrix. Diese können über die Methode stats() zurück gegeben werden, in diesem Fall an das Logger-Objekt, welches die Daten ausgibt.
Evaluation evaluation = new Evaluation(numberClasses);
INDArray output = model.output(trainingData.getFeatures());
evaluation.eval(trainingData.getLabels(), output);
logger.info(evaluation.stats());
10. Evaluate the model on the test set
Jetzt wird es zur Laufzeit spannend. Wie gut klassifiziert das Neuronale Netzwerk unbekannte Daten, sprich die Testdaten? Der Algorithmus ist exakt der gleiche wie für die Evaluation der Trainingsdaten.
evaluation = new Evaluation(numberClasses);
output = model.output(testData.getFeatures());
evaluation.eval(testData.getLabels(), output);
logger.info(evaluation.stats());
} // main
} // class PropertyClassifier
- 70 -