Я использую инструмент libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) для классификации вспомогательных векторов. Однако меня смущает формат входных данных.
Из README:
Формат файла данных обучения и тестирования:
<label> <index1>:<value1> <index2>:<value2> ... . . .
Каждая строка содержит экземпляр и заканчивается символом '\ n'. Для классификации
<label>
- целое число, обозначающее метку класса (поддерживается мультикласс). Для регрессии,<label>
это целевое значение, которое может быть любым действительным числом. Для одноклассного SVM он не используется, поэтому может быть любым числом. Пара<index>:<value>
дает значение признака (атрибута):<index>
целое число, начинающееся с 1, и<value>
действительное число. Единственным исключением является предварительно вычисленное ядро, где<index>
начинается с 0; см. раздел предварительно вычисленных ядер. Индексы должны быть в порядке возрастания. Метки в файле тестирования используются только для расчета точности или ошибок. Если они неизвестны, просто заполните первый столбец с любыми числами.
У меня есть следующие вопросы:
- Какая польза от
<index>
? Какой цели это служит? - Есть ли соответствие между одинаковыми значениями индекса разных экземпляров данных?
- Что если я пропущу / пропущу индекс между ними?
Я спрашиваю, потому что файл данных * heart_scale *, который включен в пакет для libsvm, в строке 12, индекс начинается с 2. Является ли <value>
для индекса 1 неизвестным / отсутствующим? Примечание: инструмент tools / checkdata.py, поставляемый с пакетом, сообщает, что файл * heart_scale * правильный.