java.lang.Exception: libsvm classes not in CLASSPATH!问题解决方法详解大数据

 若要在eclipse里使用weka的svm,则把下载好的wlsvm.jar,libsvm.jar,weka.jar导入工程,此处要注意weka.jar和libsvm.jar的版本要一致,否则会出异常。

java.lang.Exception: libsvm classes not in CLASSPATH!问题解决方法详解大数据

使用示例:

		File inputfile = new File(trainArffFile);         ArffLoader loader = new ArffLoader();         try { 			loader.setFile(inputfile); 			Instances insTrain = loader.getDataSet(); 	        insTrain.setClassIndex(insTrain.numAttributes()-1); 	        Classifier classifier = (Classifier) Class.forName( 	                  "weka.classifiers.functions.LibSVM").newInstance(); 	        String[] optSVM = weka.core.Utils.splitOptions("-c 8.0 -g 8.0"); 	        classifier.setOptions(optSVM); 	        classifier.buildClassifier(insTrain); 	        //增量学习 //	        Instance current = null; //	        while ((current = loader.getNextInstance(insTrain)) != null) { ////	            classifier.distributionForInstance(current); //	            classifier.updateClassifier(current); //	        } 	        inputfile = new File("test/test_message.arff"); 	        loader.setFile(inputfile); 	        Instances insTest = loader.getDataSet(); 	        //使用最后一个属性作为类属性 	        insTest.setClassIndex(insTest.numAttributes()-1); 	        Evaluation eval = new Evaluation(insTrain); 	        eval.evaluateModel(classifier, insTest);	         //	        eval.crossValidateModel(classifier, insTest, 10, new Random(1)); 	        System.out.println(eval.errorRate()); 	        System.out.println(eval.toSummaryString("/nResults/n======/n", false));

weka的使用案例
http://weka.wikispaces.com/Use+WEKA+in+your+Java+code

以下为转载部分

Weka中并不是没有SVM算法,Weka中有SMO算法的实现。LibSVM运行的比Weka里的SMO快的多,如果你敢用SMO算法去训练大数据集,你就明白天荒地老的真实含意了。其它和Weka结合的最主要的原因,我认为是,我们开始的时候往往都是用别的算法去试着做实验的(或者本来就需要多种基分类器),比如Naïve Bayes(LibSVM是比SMO快的多,可是比起来Naïve Bayes,它还是蜗牛),到最后又想试试LibSVM,这时就需要LibSVM库。

Weka3.5后增加了libsvm这个选项,在分类器中的functions下面。但是,试图运行的时候,系统提示:Problem evaluating classifier:libsvm classes not in CLASSPATH。这是因为Weka只是提供了Libsvm的Wrapper调用机制,必须要安装Libsvm后将附带的jar路径添加到Weka的启动路径中。怎么解决呢?我的Weka版本较新(3.5.7),不过我的方法适用于3.5以上的所有版本。

   第一种:首先,在http://www.cs.iastate.edu/~yasser/wlsvm/上下载wlsvm.zip的压缩包,解压后将WLSVM / lib 文件夹下的libsvm.jar 和wlsvm.jar 两个文件放到weka的安装目录下。

    然后,在weka的安装目录下打开runweka.ini这个文件,把
cmd_default=javaw -Xmx#maxheap# -classpath “%CLASSPATH%;#weka.jar#” #mainclass#   修改为
cmd_default=javaw -Xmx#maxheap# -classpath “%CLASSPATH%;#weka.jar#;wlsvm.jar;libsvm.jar” #mainclass#         (注:其实3.4版本是要将wlsvm.jar加进去的,但3.5版本就没有必要了,只用加libsvm.jar就好了)。

    最后,直接运行runweka.bat,再打开Explorer,可以在Classify的Classifier-function中找到LibSVM,像使用其它Classifier一样使用它就可以了。这样LibSVM就成功的集成到Weka了。

  第二种:设置libsvm的路径之类的,在环境变量里设置ClassPath。

另一种用法,下载WLSVM,解压后Lib文件夹下有一个LibSVM.jar的包,用和导入Weka.jar包相同的方式导入就好了,然后使用LibSVM和使用以前任何一种分类器的方式都是一样的。

LibSVM classifier =newLibSVM();

classifier.buildClassifier( instances );     

Evaluation evaluation =newEvaluation( ins );

evaluation.crossValidateModel(classifier, ins, 10, random);

System.out.println(“正确率为:”+ ( 1 – evaluation.errorRate() ) );

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/9518.html

(0)
上一篇 2021年7月19日 11:19
下一篇 2021年7月19日 11:19

相关推荐

发表回复

登录后才能评论