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:

{
”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 <prefix>.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.

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.

Ein menschenlesbarer Name der Dimension

Eine menschenlesbare Beschreibung der Dimension, z.B. in einem Satz

Der Datentyp der Dimension. Ein String mit einem der folgenen Werte:

- double - string

Stimmt bisher mit C++ Standard Datentypen überein.

Das Skalenniveau der Dimension. Ein String mit einem der folgenen Werte:

- nominal - ordinal - interval - ratio

Enthält den minimalen Wert aller Datenpunkte in dieser Dimension.

Enthält den maximalen Wert aller Datenpunkte in dieser Dimension.

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 <prefix>.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”“”