Estoy usando la libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) para la clasificación de vectores de apoyo. Sin embargo, estoy confundido sobre el formato de los datos de entrada.
Del README:
El formato del archivo de datos de entrenamiento y prueba es:
<label> <index1>:<value1> <index2>:<value2> ... . . .
Cada línea contiene una instancia y termina con un ' \n ' carácter. Para clasificación,
<label>
es un número entero que indica la etiqueta de clase (se admite la clase múltiple). Para la regresión,<label>
es el valor objetivo que puede ser cualquier número real. Para la SVM de una clase, no se utiliza por lo que puede ser cualquier número. El par<index>:<value>
da una característica (atributo):<index>
es un número entero a partir de 1 y<value>
es un número real. La única excepción es el núcleo precalculado, donde<index>
comienza en 0; véase la sección de núcleos precalculados. Los índices deben estar en orden ASCENDENTE. Las etiquetas del archivo de pruebas sólo se utilizan para calcular la precisión o los errores. Si se desconocen, basta con rellenar la primera columna con cualquier número.
Tengo las siguientes preguntas:
- Para qué sirve el
<index>
? ¿Para qué sirve? - ¿Existe una correspondencia entre los mismos valores de índice de diferentes instancias de datos?
- ¿Qué pasa si me salto un índice en el medio?
Lo pregunto porque en el archivo de datos *heart_scale* que se incluye en el paquete para libsvm, en la línea 12, el índice empieza por 2. ¿Es el <value>
para el índice 1 tomado como desconocido/falta? Nota: la herramienta tools/checkdata.py proporcionada con el paquete dice que el archivo *heart_scale* es correcto.