Как использовать LibLINEAR с Weka в Java Project - PullRequest
0 голосов
/ 06 июня 2018

Я хочу использовать LibLINEAR с оболочкой Weka в моем коде Java.Часть моего кода выглядит следующим образом:

import weka.classifiers.functions.LibLINEAR;
import weka.core.Instances;
.
.
.   
public svmModel trainSVM(Instances trainInstances)
{    
    LibLINEAR libLsvm= new  LibLINEAR();

    libLsvm = new LibLINEAR();

    String[] a = libLsvm.getOptions();

    String svmOptions = "-S 0 -K 0 -D 3 -G 0.0 -R 0.0 -N 0.5 -M 40.0 -C 0.4 -E 0.011 -P 0.1 -H";

    libLsvm.setOptions(weka.core.Utils.splitOptions(svmOptions));

    libLsvm.buildClassifier(trainInstances);
}

Однако я получаю следующую ошибку:

Exception in thread "main" java.lang.Exception: liblinear classes not in CLASSPATH!
at weka.classifiers.functions.LibLINEAR.buildClassifier(Unknown Source)
at opinionminingsvm.TrainSVMLibLinear.trainSVM(TrainSVMLibLinear.java:61)
at opinionminingsvm.LinearSVM_testing.main(LinearSVM_testing.java:42)

Я работаю в NetBeans и добавил файл liblinear-1.92.jar в библиотеки проекта,Jar-файл содержит все файлы классов, необходимые для weka.classifiers.functions.LibLINEAR.Тем не менее, я все еще получаю ошибку.

1 Ответ

0 голосов
/ 09 июня 2018

У вас есть возможность вызывать Weka в сценарии оболочки и легко связывать его с вашим Java-кодом.Ниже приведен пример строки сценария оболочки:

     for i in {100..10};


        do
           java weka.classifiers.meta.AttributeSelectedClassifier -t $files -x $CV >> $GainRatEvalResults -E "weka.attributeSelection.GainRatioAttributeEval " -S "weka.attributeSelection.Ranker -T -1.7976931348623157E308 -N $i" -W weka.classifiers.functions.LibLINEAR -- -S 4 -C 1.0 -E 0.001 -B 1.0 -L 0.1 -I 1000

done

Здесь вы выполняете итерацию от 100 до 10 объектов в соответствии с селектором функций оценки коэффициента усиления из вашего набора данных ($ file).Обратите внимание, как «lib linear» вызывается для реформирования классификации и сохранения результатов в $ GainRatEvalResults.

...