Estou usando a ferramenta libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) para classificação de vetores de suporte. No entanto, estou confuso sobre o formato dos dados de entrada.
No README:
O formato do arquivo de dados de treinamento e teste é:
<label> <index1>:<value1> <index2>:<value2> ... . . .
Cada linha contém uma instância e termina com um caractere '\ n'. Para classificação,
<label>
é um número inteiro indicando o rótulo da classe (multi-classe é suportada). Para regressão,<label>
é o valor alvo que pode ser qualquer número real. Para SVM de uma classe, ele não é usado; portanto, pode haver qualquer número. O par<index>:<value>
fornece um valor de recurso (atributo):<index>
é um número inteiro a partir de 1 e<value>
é um número real. A única exceção é o kernel pré-computado, onde<index>
começa em 0; veja a seção de kernels pré-computados. Os índices devem estar em ordem ASCENDING. As etiquetas no arquivo de teste são usadas apenas para calcular a precisão ou erros. Se eles são desconhecidos, basta preencher a primeira coluna com qualquer número.
Tenho as seguintes perguntas:
- Qual é o uso do
<index>
? Que finalidade serve? - Existe uma correspondência entre os mesmos valores de índice de diferentes instâncias de dados?
- E se eu perder / pular um índice no meio?
Eu pergunto porque o arquivo de dados * heart_scale * incluído no pacote libsvm, na linha 12, o índice inicia em 2. O <value>
índice 1 é considerado desconhecido / ausente? Nota: a ferramenta tools / checkdata.py fornecida com o pacote informa que o arquivo * heart_scale * está correto.