2013-11-07 2 views
1

У меня очень сложная проблема при работе с libsvm. Когда я тестирую свои данные в libsvm, точность смехотворна (1%). Я не знаю, была ли нормальная точность или если я сделал что-то неправильно, но когда я выполняю скрипт easy.py, когда скрипт svm-scale выполняет следующее предупреждение, появляется несколько раз.Предупреждение в svm-scale

WARNING: feature index i appeared in test.libsvm was not seen in the scaling factor file train.libsvm.range. 

Как исправить это предупреждение? будет ли исправление улучшить мою точность?

EDIT: Содержание train.libsvm.range является следующим:

x 
-1 1 
2 -1 0 
3 -1 0 
4 1 2 
5 -1 0 
6 -1 0 
7 -1 0 
8 0 1 
9 0 1 
10 -1 0 
11 0 1 
12 2 3 
13 -1 0 
14 -1 0 
15 -1 0 
16 0 2 
17 -1 0 
18 -2 0 
19 -2 0 
20 0 1 
21 0 2 
23 0 1 
24 2 3 
25 0 1 
26 -1 0 
27 -1 0 
28 1 2 
29 -1 0 
30 -1 0 
31 -1 0 
32 0 2 
36 0 1 

EDIT: Здесь вы можете увидеть The training file и Testing file

ответ

1

Это происходит потому, что есть 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) 
+0

Спасибо за ваш ответ. Что вы имеете в виду, когда говорите, что набор данных для обучения/тестирования должен совпадать? У меня есть два файла векторов функций, и все векторы признаков имеют одинаковые размеры. Итак, почему это происходит? – mad

+0

Мои данные обучения имеют 126 образцов с 64 размерами. Мои данные тестирования имеют 1129 выборок также с 64 размерами. Вы можете увидеть содержимое train.libsvm в отредактированном вопросе? еще раз спасибо. – mad

+1

@mad, скорее всего, одной из особенностей было '0' в * все * учебных экземплярах. Таким образом, не существует соответствующего масштабирующего фактора. В ваших тестовых данных появляются экземпляры, для которых указанная функция отлична от нуля, что вызывает эти предупреждения. Вы можете проверить выходной файл 'svm-scale', чтобы убедиться, что коэффициент масштабирования действительно отсутствует. –

 Смежные вопросы

  • Нет связанных вопросов^_^