Korzystam z narzędzia libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) do klasyfikacji wektora wsparcia. Jestem jednak zdezorientowany co do formatu danych wejściowych.
Z README:
Format pliku danych szkoleniowych i testowych to:
<label> <index1>:<value1> <index2>:<value2> ... . . .
Każda linia zawiera instancję i kończy się znakiem „\ n”. Do klasyfikacji
<label>
jest liczbą całkowitą wskazującą etykietę klasy (obsługiwana jest wiele klas). W przypadku regresji<label>
jest wartością docelową, która może być dowolną liczbą rzeczywistą. W przypadku SVM jednej klasy nie jest używany, więc może być dowolną liczbą. Para<index>:<value>
podaje wartość cechy (atrybutu):<index>
jest liczbą całkowitą rozpoczynającą się od 1 i<value>
jest liczbą rzeczywistą. Jedynym wyjątkiem jest wstępnie obliczone jądro, gdzie<index>
zaczyna się od 0; zobacz sekcję wstępnie obliczonych jąder. Indeksy muszą być w porządku rosnącym. Etykiety w pliku testowym służą wyłącznie do obliczania dokładności lub błędów. Jeśli są nieznane, wystarczy wypełnić pierwszą kolumnę dowolnymi liczbami.
Mam następujące pytania:
- Jakie jest zastosowanie
<index>
? Do czego to służy? - Czy istnieje zgodność między tymi samymi wartościami indeksu różnych instancji danych?
- Co się stanie, jeśli pominę / pominę indeks pomiędzy?
Pytam, ponieważ plik danych * heart_scale *, który jest zawarty w pakiecie dla libsvm, w linii 12. indeks zaczyna się od 2. Czy <value>
dla indeksu 1 wzięto jako nieznany / brakuje? Uwaga: narzędzie tools / checkdata.py dostarczone z pakietem mówi, że plik * heart_scale * jest poprawny.