如何在Java项目中使用LibkaAR和Weka

时间:2018-06-06 11:11:58

标签: java weka liblinear

我想在我的java代码中使用带有Weka包装器的LibLINEAR。我的部分代码如下:

try {
  FileInputStream fis = openFileInput(String filename);
  // ... do something
try {
    fis.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
} catch (FileNotFoundException e) { 
  e.printStackTrace();
}

但是我收到了以下错误:

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);
}

我在NetBeans工作,我已将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) 文件添加到项目库中。 Jar文件包含liblinear-1.92.jar所需的所有类文件。但是,我仍然收到错误。

1 个答案:

答案 0 :(得分:0)

您可以在shell脚本中调用Weka,并可以轻松地将其与Java代码连接。下面提供了一个示例shell脚本行:

     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

在这里,您将根据数据集($ file)中的增益比eval功能选择器从100个功能向下迭代10个功能。注意如何调用“lib linear”来改进分类并将结果保存到$ GainRatEvalResults。