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

ruw*_*ego 11 java weka libsvm

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

and*_*rew 17

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

你可以从这里获得wlsvm.jar:http://ailab.ist.psu.edu/yasser/wlsvm.html

你可以从这里得到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);
Run Code Online (Sandbox Code Playgroud)

祝好运.


Tha*_*ndu 7

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

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

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

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 );
Run Code Online (Sandbox Code Playgroud)

最后训练分类器

classifier.buildClassifier( train );
Run Code Online (Sandbox Code Playgroud)


fra*_*ran 5

要在最新版本的weka (3.7.9) 中使用libSVM 库,您只需使用weka 应用程序的“包管理器”并安装libSVM 包。

最后,从java项目中,您必须将“包管理器”创建的LibSVM库添加到类路径中。

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


Mat*_*lin 5

事实证明,通过从 Maven Central 提供内容,weka 人员使用最新版本使我们的工作变得更加轻松。

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

就依赖项而言,一切都会正常工作。不要乱用包装器并将 jars 添加到类路径或类似的东西。

我使用的是 3.7.12 版,但我认为它已经可用,因为包管理器功能已添加到 GUI 中。