Information Technology Reference
In-Depth Information
in der Datei symbolische Werte befinden. Zwei Vektoren werden verwendet, um die aus
der Datei gelesenen Rohdaten zusammen mit der normalisierten, rein numerischen Daten-
menge zu speichern. Die Hash-Tabelle variableList hält einen Satz von Variablen,
die die logischen Datentypen für jedes Feld der Datei definieren. Das Element field-
List enthält Verweise auf dieselben Variablen, die auch auf der variableList stehen,
doch wie die Methode addVariable() zeigt, werden die Variablen dem Vektor in der
gleichen Reihenfolge übergeben, wie sie der Datenmenge hinzugefügt wurden. Das er-
möglicht eine exakte Übereinstimmung der Felder in der Datei mit den Variablen, die die
Daten definieren. Das Element numRecords dient praktischen Zwecken und entspricht
der Größe von fieldList und numRecords wird auf die Anzahl der Datensätze in
der Datei eingestellt. Die Klasse DataSet hat nur einen einzigen Konstruktor. Er nimmt
den Objektnamen und den Dateinamen als Parameter an. Zur Definition der Datendatei
dient eine einfache Textdatei, die eine Liste der Felddatentypen und ihre Namen enthält.
Ein einzelnes Feld muss als ClassField bestimmt werden. Die Datentypen können
kontinuierlich, diskret oder kategorisch sein. In der Implementierungsvariante werden dis-
krete und kategorische Daten gleich behandelt. Beim Lesen der einzelnen Feldtypen aus
der Datendefinitionsdatei in der Methode loadDataFileDefinition() wird eine
Variable dieses Typs mit dem festgelegten Namen instanziiert und der Datenmenge mit
der Methode addVariable() hinzugefügt. Es wird vorausgesetzt, dass die Felder in
derselben Reihenfolge definiert werden wie die dazugehörigen Daten in der Datendatei.
Eine der wichtigsten Methoden in der Klasse DataSet ist loadDataFile() . Sie ver-
wendet keine Parameter, da alle Informationen, die zum Laden der Datei in den Speicher
benötigt werden, schon im Konstruktor DataSet() enthalten sind. Vor dem Laden der
Datendatei wird zuerst mit der Methode loadDataFileDefinition() die Datei-
formatdefinition eingelesen. Dabei kommt ein FileInputStream zum Einsatz, um
Daten aus der Datei abzurufen. Mit der Methode readLine() wird eine Zeile nach
der anderen eingelesen, was den Einsatz eines StringTokenizer bedingt, um jeden
Feldwert zu analysieren. Es wird ein neues String-Array instanziiert, in dem alle Daten-
sätze abgelegt werden. Diese wird dem Vektor data hinzugefügt. Beim Lesen der Datei
erfolgt auch gleichzeitig eine Prüfung bezüglich der Größe, das Ergebnis wird im Ele-
ment numRecords abgespeichert. Die nächsten drei Methoden verwenden normalisierte
Daten. Neuronale Netze erfordern rein numerische Eingabedaten, also müssen alle Daten-
mengen, die Symbole enthalten, einer Vorverarbeitung zugeführt werden (Haun 1998 ).
Neuronale Netze erfordern auch meist, dass die Eingabedaten auf einen bestimmten Be-
reich skaliert werden, in diesem Fall auf 0,0 bis 1,0. Dieser Prozess der Konvertierung
symbolischer Werte und der Skalierung kontinuierlicher Daten wird als Normalisierung
bezeichnet. Mit den Variablendefinitionen wird festgelegt, auf welche Weise die Daten
normalisiert werden. Bei einer diskreten Variablen werden ihr Symbol oder ihre Zahl ver-
wendet, um daraus den zugehörigen Indexwert zu ermitteln. Diese wird dann in einen
Eins-aus-N-Vektor konvertiert. Wenn beispielsweise drei mögliche Strings („ja“, „nein“,
„vielleicht“) in einem Feld vorkommen, das als diskrete Variable definiert ist, konvertiert
der Algorithmus jedes Symbol in einen Code aus Einsen und Nullen, dessen Länge der
Search WWH ::




Custom Search