2015-01-16 4 views
1

Я пишу этот код, чтобы сделать 5-кратное перекрестное подтверждение, используя LibSVM, используя Weka.Что означает это исключение при запуске LibSVM с помощью Weka?

LibSVM svm = new LibSVM(); 
    svm.setKernelType(new SelectedTag(2, LibSVM.TAGS_KERNELTYPE)); 
    svm.setDegree(2); 
    //Run a cross validation to select the right parameters 
    CVParameterSelection ps = new CVParameterSelection(); 
    ps.setClassifier(svm); 
    ps.setNumFolds(5); // using 5-fold CV 
    ps.addCVParameter("G 1 10 .1"); 

    // build and output best options 
    //I get exception below ->>>>>>>>>>>>>> 
    ps.buildClassifier(isTrainingSet); 
    System.out.println(Utils.joinOptions(ps.getBestClassifierOptions())); 

Но он бросает исключение, говоря

Exception in thread "main" java.lang.Exception: Error: gamma < 0 
at weka.classifiers.functions.LibSVM.buildClassifier(LibSVM.java:1690) 
at weka.classifiers.meta.CVParameterSelection.findParamsByCrossValidation(CVParameterSelection.java:377) 
at weka.classifiers.meta.CVParameterSelection.findParamsByCrossValidation(CVParameterSelection.java:354) 
at weka.classifiers.meta.CVParameterSelection.buildClassifier(CVParameterSelection.java:628) 
at ExtractTopics.main(ExtractTopics.java:164) 

Я думаю, что GAMME параметр не меньше нуля, верно? начальное значение равно 1, а окончательное значение равно 10 с 10 шагами. Итак, почему же это исключение?

+0

Ответил на свой вопрос ниже. –

ответ

2

Отвечая на мой вопрос ниже.

Последний параметр из трех значений не является величиной размера шага. Это количество шагов для выполнения. Поэтому было неправильно сказать выше, что я хочу выполнить 0,1 шага. Это должно было быть 100 шагов, так что Weka может сделать вывод о том, что внутри него требуется размер в 0,1 шага.

Использование [1 10 100] помогло, и все получилось отлично.

Ответ, который я нашел здесь - http://weka.8497.n7.nabble.com/Problem-evaluating-classifier-C-lt-0-error-td31971.html

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