如何在我的Java代码中使用LibSVM和Weka?

我想在我的应用程序中使用与Weka的LibSVM分类器。 我怎么能(或者我在哪里可以找到好的例子)这样做?

现在有点晚了,当然,但无论如何我都会回答。 您必须在项目中使用weka.jar,libsvm.jar和wlsvm.jar(libsvm包装器)。 所以只需在构建路径或类路径中包含所有3个jar或其他任何内容。

你可以从这里获得wlsvm.jar: http : //www.cs.iastate.edu/~yasser/wlsvm/

你可以从这里得到weka: http : //www.cs.waikato.ac.nz/ml/weka/

你可以从这里获得libsvm: http : //www.csie.ntu.edu.tw/~cjlin/libsvm/

我无法使用weka 3.7.7或3.7.8,但我能够使用3.6.8(截至今天的最新稳定版本)。

另外,因为我必须从svnlib获取.class文件,并且还包括那些在我的项目的构建路径中的文件。 要构建.class文件,请使用SVNLib / java中的make文件。

这里有一小段代码可以帮助您入门:

DataSource source = new DataSource(new File("mycsvinputfile")); System.out.println(source.getStructure()); Instances data = source.getDataSet(); // setting class attribute if the data format does not provide this information // For example, the XRFF format saves the class attribute information as well if (data.classIndex() == -1) data.setClassIndex(data.numAttributes() - 1); //initialize svm classifier LibSVM svm = new LibSVM(); svm.buildClassifier(data); 

祝你好运。

使用新版本,您只需要weka.jar并像这样调用svm,

 WekaPackageManager.loadPackages( false, true, false ); AbstractClassifier classifier = ( AbstractClassifier ) Class.forName( "weka.classifiers.functions.LibSVM" ).newInstance(); 

如果您愿意给出选项,请设置这样的选项

 String options = ( "-S 0 -K 0 -D 3 -G 0.0 -R 0.0 -N 0.5 -M 40.0 -C 1.0 -E 0.001 -P 0.1" ); String[] optionsArray = options.split( " " ); classifier.setOptions( optionsArray ); 

最后训练分类器

 classifier.buildClassifier( train ); 

要将libSVM库与最新版本的weka(3.7.9)一起使用,您只需使用weka应用程序的“Package Manager”并安装libSVM软件包。

最后,从java项目中,您必须将由“程序包管理器”创建的LibSVM库添加到Classpath。

通常它位于“ (HOME)\ wekafiles \ packages \ LibSVM ”目录中。

事实certificate,通过Maven Central提供的东西,weka们已经使我们的工作变得更容易了。

只需从这里获得依赖: http : //mvnrepository.com/artifact/nz.ac.waikato.cms.weka/LibSVM

一切都将依赖于依赖。 不要乱用包装器并将jar添加到类路径或类似的东西。

我使用的是3.7.12版本,但我认为自从包管理器function添加到GUI以来它已经可用。

点击此链接结合Weka和libsvm http://www.cs.iastate.edu/~yasser/wlsvm/

weka很好计算ROC,召回等….而libsvm对分类,回归等有好处…