Nun geht es an die Implementierung des Maschinellen Lernens mit Hilfe des DL4J-Frameworks.
Der Algorithmus in der main-Methode der Java-Klasse PropertyClassifier ist eigentlich recht einfach (vorher müssen alle nötigen DL4J-Klassen aus den verschiedenen Bibliotheken importiert werden):
1. Get the dataset
2. Classify the dataset
3. Split the data into training data (70%) and test data (30%)
4. Normalize the data
5. Build the logger for getting information
6. Build the configuration (neural network)
7. Build the model (neural network)
8. Train the model
9. Evaluate the model on the training set
10. Evaluate the model on the test set
0. Import all DL4J-classes
Die datavec-Bibliothek stellt die Klassen für die Konfiguration der Daten zur Verfügung, z. B. CSVRecordReader und FileSplit.
Die deeplearning4j-Bibliothek stellt die Klassen für die Konfiguration des Neuronalen Netzwerkes zur Verfügung, z. B. MultiLayerNetwork, OutputLayer, DenseLayer und MultiLayerConfiguration.
Das Hauptinterface der nd4j-Bibliothek ist das Interface INDArray zur Konstruktion von n-dimensionalen Arrays. Auch gibt es Klassen für die Datenverarbeitung (wie z. B. DataSet, SplitTestAndTrain und DataNormalization) und für die Evaluation (Evaluation).
Die slf4j-Bibliothek stellt dem DL4J-Framework Klassen für das Loggen von Systemdaten zur Verfügung, z. B. Logger und LoggerFactory.
import org.datavec.*;
import org.deeplearning4j.*;
import org.nd4j.*;
import org.slf4j.*;
Im späteren Quelltext werden aber die Klassen bzw. Interfaces dezidiert importiert.
1. Get the dataset
Es wird ein Objekt der Klasse CSVRecordReader erstellt und ihm die Information gegeben, dass die Daten durch ein Komma getrennt sind. Dann wird es mit Hilfe der Datei WohnungsdatenAlsCSV.txt als sog. „InputSplit“ (list of loadable locations) initialisiert.
public class PropertyClassifier {
public static void main(String[] args) throws Exception {
char delimiter = ',';
RecordReader recordReader = new CSVRecordReader(delimiter);
recordReader.initialize(new FileSplit(new File("WohnungsdatenAlsCSV.txt")));
- 66 -