Sto usando lo strumento libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) per la classificazione dei vettori di supporto. Tuttavia, sono confuso sul formato dei dati di input.
Dal README:
Il formato del file di dati di addestramento e test è:
<label> <index1>:<value1> <index2>:<value2> ... . . .
Ogni riga contiene un'istanza ed è terminata da un carattere '\ n'. Per la classificazione,
<label>
è un numero intero che indica l'etichetta della classe (è supportata la multi-classe). Per regressione,<label>
è il valore target che può essere qualsiasi numero reale. Per SVM di una classe, non viene utilizzato, quindi può essere qualsiasi numero. La coppia<index>:<value>
fornisce un valore di caratteristica (attributo):<index>
è un numero intero che inizia da 1 ed<value>
è un numero reale. L'unica eccezione è il kernel precompilato, dove<index>
inizia da 0; vedere la sezione dei kernel precompilati. Gli indici devono essere in ordine ASCENDENTE. Le etichette nel file di test vengono utilizzate solo per calcolare precisione o errori. Se sono sconosciuti, basta riempire la prima colonna con qualsiasi numero.
Ho le seguenti domande:
- Qual è l'uso di
<index>
? A quale scopo serve? - Esiste una corrispondenza tra gli stessi valori di indice di diverse istanze di dati?
- Cosa succede se mi manca / salta un indice tra?
Lo chiedo perché il file di dati * * heart_scale che è incluso nel pacchetto per libsvm, sulla linea 12, l'indice parte da 2. È la <value>
per l'indice 1 preso come sconosciuto / mancante? Nota: lo strumento tools / checkdata.py fornito con il pacchetto indica che il file * heart_scale * è corretto.