__**Internes Datenformat**__
Dieses Kapitel beschreibt das interne Datenformat, das für die Speicherung von Datensätzen verwendet wird. Auf der
Dateiebene besteht ein Datensatz aus zwei Dateien, die einen gemeinsamen Prefix haben:
* Die Metadaten als *.data.json-Datei (z.B. iris.data.json, siehe Listing)
* Die eigentlichen Datenpunkte als *.data-Datei (z.B. iris.data, siehe Listing)
{
”title” : ”Iris flower data set”,
”fields” : [
{
”name” : ”petal_length” ,
”title” : ”Petal length” ,
”description” : ”petal_length in cm”
”datatype” : ”double” ,
”scale” : ”ratio” ,
”min” : 1 . 0 ,
”max” : 6 . 9
} ,
{
”name” : ”petal_width” ,
”title” : ”Petal width ” ,
”description” : ”petal width in cm”
”datatype” : ” double ” ,
”scale” : ”ratio” ,
”min” : 0.1 ,
”max” : 2.5
} ,
{
”name” : ”species” ,
”title” : ”Species” ,
”datatype” : ”string” ,
”scale” : ”nominal” ,
”class” : true
} ]
}
Listing: Beispiel für eine Metadaten-Datei im JSON-Format: iris.data.json
1.4,0.2,Iris-setosa
1.4,0.2,Iris-setosa
1.4,0.2,Iris-setosa
4.0,1.3,Iris-versicolor
4.9,1.5,Iris-versicolor
4.7,1.2,Iris-versicolor
6.3,1.8,Iris-virginica
5.8,1.8,Iris-virginica
6.1,2.5,Iris-virginica
Listing: Beispiel für eine Datensatz-Datei im CSV-Format: iris.data
----
__**Metadatenformat**__
Das Metadatenformat beschreibt den Datensatz an sich und jede Dimension
(oder ”Spalte”, im Kontext von Tabellen)
des Datensatzes. Es liegt im JSON-Format mit dem Pfad .data.json vor. Der Vorteil von JSON liegt in
der breiten Verfügbarkeit von Parsern, des menschenlesbaren Formats,
der vielen unterstützten Datentypen und der
einfachen Erweiterbarkeit des Schemas. Das Listing zeigt das Schema an einem Beispiel.
Die folgenden Unterkapitel beschreiben die Teile des Schemas.
**title (Pflichtfeld)**
Ein menschenlesbarer Name des Datensatzes.
**fields (Pflichtfeld)**
Ein Array von JSON-Objekten. Jedes Element beschreibt eine Dimension des Datensatzes. Ein Datenpunkt
enthält einen Wert für jede dieser Dimensionen in genau dieser Reihenfolge mit den folgenden Eigenschaften.
* **name (Pflichtfeld)**
Ein maschinenlesbarer Name der Dimension. Er sollte den Richtlinien für C-Identifier folgen:
- mit einem ASCII-Buchstaben beginnen
- keine Leerzeichen/Whitespace enthalten
- keine Sonderzeichen außer ”_”
Diese Regeln lassen sich in einem regul¨ aren Ausdruch zusammenfassen: ”[a-zA-Z ][a-zA-Z0-9 ]*”.
Sie stellen sicher, dass bei der Darstellung keine Probleme auftreten und dass eine Umwandlung
in andere Formate ohne Probleme erfolgen kann.
* **title (optional)**
Ein menschenlesbarer Name der Dimension
* **description (optional)**
Eine menschenlesbare Beschreibung der Dimension, z.B. in einem Satz
* **datatype (Pflichtfeld)**
Der Datentyp der Dimension. Ein String mit einem der folgenen Werte:
- double
- string
Stimmt bisher mit C++ Standard Datentypen überein.
* **scale (Pflichtfeld)**
Das Skalenniveau der Dimension. Ein String mit einem der folgenen Werte:
- nominal
- ordinal
- interval
- ratio
* **min (Pflichtfeld wenn datatype == double)**
Enthält den minimalen Wert aller Datenpunkte in dieser Dimension.
* **max (Pflichtfeld wenn datatype == double)**
Enthält den maximalen Wert aller Datenpunkte in dieser Dimension.
* **class (optional, default = false)**
Ein Boolean, der angibt, ob es sich bei dieser Dimension um eine Zielklasse handelt, die schon ein Ergebnis darstellt und daher nur zur Überprüfung eines Klassifikationsverfahrens eingebunden werden sollte. Ein fehlender Wert hat
den selben Effekt, wie "class": false. Wenn datatype == double, dann beschreibt eine solche Dimension keine
Klassen, sondern eine abhängige, kontinuierliche Variable einer Regressionsanalyse.
----
__**Format der Datenpunkte**__
Die Datenpunkte liegen in einer CSV-Datei mit dem Pfad .data vor. Listing zeigt ein Beispiel einer
solchen Datei. Die CSV-Datei enthält keine Kopfzeile, keine Leerzeilen und keine Kommentare. Das Trennzeichen
zwischen Einträgen ist ein Komma ”,”. Nach einem Komma folgt direkt der Nächste Eintrag (kein Leerzeichen). Als
Dezimalpunkt wird ein Punkt ”.” verwendet. Strings werden mit Anführungszeichen (”) umschlossen, Zahlenwerte
haben keine Anführungszeichen. Anführungszeichen in Strings werden mit einem doppelten Anführungszeichen
escaped:
ein Beispiel "text"
wird zu
"ein Beispiel ""text"""