Это происходит потому, что есть featutres в ваших данных испытаний, который не были в данных обучения, используемых для создания файла масштабирования. Убедитесь, что ваши учебные и тестовые данные совпадают. Если ваши тестовые данные (или данные обучения) взяты из неправильного набора данных, то получение правильных данных может устранить проблему.
В вашем файле данных файла данных 3, например, всегда ноль, поэтому он не включается в том же строке 5626 из тестового файла выглядит следующим образом:
-1 1:0 2:-1 3:-1 4:2 5:-1 6:-1 7:-1 8:0 9:0 10:0 11:0 12:2 13:0 14:-1
Поскольку функция 3 имеет значение в тестовом файле, но не в коэффициенте масштабирования файла вы получите сообщение об ошибке.
Я не уверен, где содержание train.libsvm.range пришли от вас в курсе, потому что если я произвожу его от даты тестирования я получаю:
x
-1 1
2 -1 0
4 0 2 ** note 3 is missing **
5 -1 0
6 -1 0
7 -1 0
8 0 1
9 0 1
12 0 3 ** note 10, 11 are missing **
etc.
Убедитесь, что вы используете правильное испытание и учебные данные.
одна вещь, работает easy.py я получаю 65% точность не 1%:
$ ./easy.py train_libsvm.mht test_sdx.mht
Scaling training data...
WARNING: original #nonzeros 7560
new #nonzeros 15748
Use -l 0 if many original feature values are zeros
Cross validation...
Best c=512.0, g=0.0001220703125 CV rate=70.0
Training...
Output model: train_libsvm.mht.model
Scaling testing data...
WARNING: feature index 3 appeared in file test_sdx.mht was not seen in the scaling factor file train_libsvm.mht.range.
WARNING: feature index 10 appeared in file test_sdx.mht was not seen in the scaling factor file train_libsvm.mht.range.
WARNING: feature index 11 appeared in file test_sdx.mht was not seen in the scaling factor file train_libsvm.mht.range.
WARNING: feature index 13 appeared in file test_sdx.mht was not seen in the scaling factor file train_libsvm.mht.range.
WARNING: feature index 22 appeared in file test_sdx.mht was not seen in the scaling factor file train_libsvm.mht.range.
WARNING: feature index 25 appeared in file test_sdx.mht was not seen in the scaling factor file train_libsvm.mht.range.
WARNING: original #nonzeros 67740
new #nonzeros 169332
Use -l 0 if many original feature values are zeros
Testing...
Accuracy = 65.651% (3706/5645) (classification)
Спасибо за ваш ответ. Что вы имеете в виду, когда говорите, что набор данных для обучения/тестирования должен совпадать? У меня есть два файла векторов функций, и все векторы признаков имеют одинаковые размеры. Итак, почему это происходит? – mad
Мои данные обучения имеют 126 образцов с 64 размерами. Мои данные тестирования имеют 1129 выборок также с 64 размерами. Вы можете увидеть содержимое train.libsvm в отредактированном вопросе? еще раз спасибо. – mad
@mad, скорее всего, одной из особенностей было '0' в * все * учебных экземплярах. Таким образом, не существует соответствующего масштабирующего фактора. В ваших тестовых данных появляются экземпляры, для которых указанная функция отлична от нуля, что вызывает эти предупреждения. Вы можете проверить выходной файл 'svm-scale', чтобы убедиться, что коэффициент масштабирования действительно отсутствует. –