Ich verwende das Tool libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) zur Unterstützung der Vektorklassifizierung. Ich bin jedoch verwirrt über das Format der Eingabedaten.
Aus der README:
Das Format der Trainings- und Testdatendatei ist:
<label> <index1>:<value1> <index2>:<value2> ... . . .
Jede Zeile enthält eine Instanz und wird mit einem '\ n'-Zeichen abgeschlossen. Bei der Klassifizierung
<label>
handelt es sich um eine Ganzzahl, die die Klassenbezeichnung angibt (mehrere Klassen werden unterstützt). Für die Regression<label>
ist der Zielwert eine beliebige reelle Zahl. Für eine SVM-Klasse wird sie nicht verwendet, es kann sich also um eine beliebige Zahl handeln. Das Paar<index>:<value>
gibt einen Merkmalswert (Attributwert) an:<index>
ist eine Ganzzahl ab 1 und<value>
eine reelle Zahl. Die einzige Ausnahme ist der vorberechnete Kernel, bei<index>
dem mit 0 begonnen wird. Siehe den Abschnitt über vorberechnete Kernel. Indizes müssen in aufsteigender Reihenfolge sein. Etiketten in der Testdatei werden nur zur Berechnung von Genauigkeit oder Fehlern verwendet. Wenn sie unbekannt sind, füllen Sie einfach die erste Spalte mit beliebigen Zahlen.
Ich habe folgende Fragen:
- Was nützt der
<index>
? Welchem Zweck dient es? - Gibt es eine Entsprechung zwischen den gleichen Indexwerten verschiedener Dateninstanzen?
- Was ist, wenn ich dazwischen einen Index überspringe?
Ich frage, weil die Datendatei * heart_scale *, die im Paket für libsvm enthalten ist, in Zeile 12 mit 2 beginnt. Wird die <value>
für Index 1 als unbekannt / fehlend angenommen? Hinweis: Das im Paket enthaltene Tool tools / checkdata.py gibt an, dass die Datei * heart_scale * korrekt ist.