其中Weka和LibSVM .jar文件在Java代码中用于SVM分类

 农大军乐团_697 发布于 2022-12-31 12:23

如果我使用Weka Explorer运行一些训练数据来反对使用线性内核的SVM测试数据,一切都很好.

但是我需要在我自己的Java中以编程方式执行此操作,并且我当前的代码如下所示:

Instances train = new Instances (...);
train.setClassIndex(train.numAttributes() - 1);
Instances test = new Instances (...) + 
ClassificationType classificationType = ClassificationTypeDAO.get(6);       
LibSVM libsvm = new LibSVM();
String options = (classificationType.getParameters());
String[] optionsArray = options.split(" ");                  
libsvm.setOptions(optionsArray);
String[] pars = libsvm.getOptions();     
Evaluation eval = new Evaluation(train);
libsvm.buildClassifier(train);       
eval.evaluateModel(libsvm, test);

System.out.println(eval.toSummaryString("\nResults\n======\n", false)); 

但是,正在抛出异常:

eval.evaluateModel(libsvm, test);

尽管try...catch围绕此代码进行了大量尝试,但null根据下面的完整堆栈跟踪,简单地报告了异常(这确实很有用).

我不相信这个问题是由于我自己的代码,因为其他分类器已成功运行它.我正在研究这个问题的原因是环境的理论.但在哪里和什么?我正在使用Tomcat通过NetBeans 8运行我的应用程序,weka.jar并且LibSVM.jar在应用程序的.lib文件夹中有最新版本的应用程序.

但是我需要libsvm.jar从下载提供:

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

如果是后一种情况,我如何解决Windows中的命名冲突,LibSVM.jar并将libsvm.jar其视为同一文件?

在过去的几个小时里,这让我很困惑.我已经尝试将两个文件LibSVM.jarlibsvm.jar文件添加到.lib文件夹中,重命名它们,将它们放入新定义的文件夹中CLASSPATH,但没有任何作用.

Java异常的完整堆栈跟踪是:

null weka.classifiers.functions.LibSVM.distributionForInstance(LibSVM.java:1489)weka.classifiers.Evaluation.evaluationForSingleInstance(Evaluation.java:1560)weka.classifiers.Evaluation.evaluateModelOnceAndRecordPrediction(Evaluation.java:1597)weka.classifiers.Evaluation .evaluateModel(Evaluation.java:1477)visualRSS.test.Weka_LibSVM_Test.classify(Weka_LibSVM_Test.java:48)visualRSS.initialisation.TestProgram_Context_Listener.contextInitialized(TestProgram_Context_Listener.java:29)org.apache.catalina.core.StandardContext.listenerStart(StandardContext .java:3972)org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)org.apache.catalina.core.StandardContext.reload(StandardContext.java:3228)org.apache.catalina.manager.ManagerServlet .reload(ManagerServlet.java:943)org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:361)javax.servlet.http.HttpServlet.service(httpServlet.java:617)javax.servlet.http.HttpServlet .service(HttpServlet.java:717)org.apache .catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.apache.catalina.core.StandardWrapperValve.invoke(ParticalWrapperValve.java:233 )org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:558)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve) .java:127)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)org.apache.catalina.connector.CoyoteAdapter .service(CoyoteAdapter.java:298)org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)org.apache.coyote.http11.Http11AprProtocol $ Http11ConnectionHandler.process(Http11AprProtocol.java:579)org.apache .tomcat.util.net.AprEndpoint $ Worker.run(AprEndpoint.java:15 55)

Mr Morgan.. 5

我的测试代码的问题与.jarWeka以编程方式运行LibSVM所需的文件有关.

如果我的代码是:

public static void classify() {      
    try {            
        Instances train = new Instances (...);            
        train.setClassIndex(train.numAttributes() - 1);         
        Instances test = new Instances (...);            
        test.setClassIndex(test.numAttributes() - 1);                      
        ClassificationType classificationType = ClassificationTypeDAO.get(6);  // 6 is SVM.        
        LibSVM classifier = new LibSVM();
        String options = (classificationType.getParameters());
        String[] optionsArray = options.split(" ");                          
        classifier.setOptions(optionsArray);        
        classifier.buildClassifier(train);        
        Evaluation eval = new Evaluation(train);
        eval.evaluateModel(classifier, test);
        System.out.println(eval.toSummaryString("\nResults\n======\n", false));       
    } 
    catch (Exception ex) {            
        Misc_Utils.printStackTrace(ex);
    }                       
}

我发现我需要放置weka.jar(来自Weka)和libsvm.jar(来自http://www.csie.ntu.edu.tw/~cjlin/libsvm/在应用程序的.lib文件夹中.但由于Windows中的命名冲突,我重命名为文件LibSVM.jar(来自Weka)LibSVM_Weka.jar并将其添加到.lib文件夹中.

运行程序我现在的结果与Weka的资源管理器相匹配,使用的关键字频率在5类数据中分布不均匀.

1 个回答
  • 我的测试代码的问题与.jarWeka以编程方式运行LibSVM所需的文件有关.

    如果我的代码是:

    public static void classify() {      
        try {            
            Instances train = new Instances (...);            
            train.setClassIndex(train.numAttributes() - 1);         
            Instances test = new Instances (...);            
            test.setClassIndex(test.numAttributes() - 1);                      
            ClassificationType classificationType = ClassificationTypeDAO.get(6);  // 6 is SVM.        
            LibSVM classifier = new LibSVM();
            String options = (classificationType.getParameters());
            String[] optionsArray = options.split(" ");                          
            classifier.setOptions(optionsArray);        
            classifier.buildClassifier(train);        
            Evaluation eval = new Evaluation(train);
            eval.evaluateModel(classifier, test);
            System.out.println(eval.toSummaryString("\nResults\n======\n", false));       
        } 
        catch (Exception ex) {            
            Misc_Utils.printStackTrace(ex);
        }                       
    }
    

    我发现我需要放置weka.jar(来自Weka)和libsvm.jar(来自http://www.csie.ntu.edu.tw/~cjlin/libsvm/在应用程序的.lib文件夹中.但由于Windows中的命名冲突,我重命名为文件LibSVM.jar(来自Weka)LibSVM_Weka.jar并将其添加到.lib文件夹中.

    运行程序我现在的结果与Weka的资源管理器相匹配,使用的关键字频率在5类数据中分布不均匀.

    2022-12-31 12:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有