Я пытаюсь использовать предварительно вычисленное ядро с LibSVM 3.17 (Java Version), но сталкивается с ошибкой, которая гласит: «Неверный формат ввода: sample_serial_number вне диапазона» в методе read_problem() в классе svm_train.«Неверный формат ввода: sample_serial_number вне диапазона» при попытке использовать предварительно вычислимое ядро с LibSVM
Я использую линейное ядро, чтобы начать с i.e, взяв dot-произведение двух векторов. Данные, которые я использую, были масштабированы с использованием svm_scale в диапазоне [-1,1]. При сохранении моего предварительно вычислимого ядра я сохраняю идентификатор строки (которая фактически является уникальным идентификатором для строки) для моего первого столбца и содержимого матрицы для последующих столбцов. Моя сформированная матрица симметрична и я включил первую пару записей содержимого файла ниже для вашей оценки:
1 0:10.3098007199 1:9.691388073999995 2:8.269529587900001 3:10.836359234799996
2 0:9.691388073999995 1:10.441238090599997 2:7.5937360488 3:9.193978496500002
3 0:8.269529587900001 1:7.5937360488 2:8.1263441462 3:9.8885507424
4 0:10.836359234799996 1:9.193978496500002 2:9.8885507424 3:13.705259598099996
Сама ошибка возникает, когда, когда значение:
48:0.015231278900000159
встречается в мой предварительно вычисленный файл ядра (который находится в первой строке). Ошибка возникает потому, что значение выше не следующий тест:
if ((int)prob.x[i][0].value <= 0 || (int)prob.x[i][0].value > max_index)
, где prob.x [I] [0] = .value 0,015231278900000159 в пределах read_problem() в svm_train.
Я немного зациклен на том, как это сделать. Мне интересно, сохранил ли я данные в правильном формате? Я прочитал README в LibSVM и мне думаю Я делаю все правильно (но, очевидно, нет) !! Я также посмотрел на другие ответы, данные уже, такие как:
Libsvm precomputed kernels и Precomputed Kernels with LibSVM in Python
, но, к сожалению, я не могу видеть ответ в них.
Последнее замечание: когда я масштабировал данные в диапазоне [0,1], вышеупомянутая ошибка не была (как все значения в матрице, где теперь> = 1), но я озадачен тем, почему отрицательное значение внутри матрицы, по-видимому, вызывает проблемы в первую очередь.
Предлагаемая помощь/проницательность были бы весьма полезными.