2. Classify the dataset
Die Daten bestehen aus 1039 Datensätzen (batchSize) mit jeweils 3 Eingangsdaten (labelIndex) und 3 Arten der Klassifikation (numberClasses). Es wird jeweils ein Objekt der Klasse RecordReaderDataSetIterator und der Klasse DataSet erstellt. Das Letztgenannte erhält die Referenz auf die Daten, die dann über die Methode shuffle() zufällig neu gewürfelt bzw. zusammengesetzt werden (falls die Daten in irgendeiner Weise geordnet vorliegen).
int labelIndex = 3;
int numberClasses = 3;
int batchSize = 1039;
DataSetIterator iterator = new RecordReaderDataSetIterator(recordReader, batchSize,
labelIndex, numberClasses);
DataSet allData = iterator.next();
allData.shuffle();
3. Split the data into training data (70%) and test data (30%)
Das Aufsplitten in Trainings- und Testdaten ist einfach. Es bedarf eines neuen Objektes der Klasse SplitTestAndTrain und der Information, wie die Daten prozentual aufgeteilt werden sollen. Danach werden die Trainingsdaten und die Testdaten vom Typ DataSet erstellt.
SplitTestAndTrain testAndTrain = allData.splitTestAndTrain(0.70);
DataSet trainingData = testAndTrain.getTrain();
DataSet testData = testAndTrain.getTest();
4. Normalize the data
Es wird ein Objekt der Klasse NormalizerStandardize erstellt. Über die Methode fit(…) werden statistische Details (z. B. Standardabweichung) der Trainingsdaten gesammelt. Danach werden mit diesen Informationen sowohl die Trainingsdaten als auch die Testdaten normalisiert, sprich die Eingangswerte bewegen sich nur noch zwischen 0 und 1.
DataNormalization normalizer = new NormalizerStandardize();
normalizer.fit(trainingData);
normalizer.transform(trainingData);
normalizer.transform(testData);
5. Build the logger for getting information
Um im weiteren Verlauf Informationen über das Lernen zu erhalten, wird ein sog. Logger-Objekt benötigt, mit dessen Methode info(…) man viele Informationen ausgeben kann.
Logger logger = LoggerFactory.getLogger(PropertyClassifier.class);
- 67 -