首先要提的是LibSVM是一个库,Lib很明显是library的缩写,有些人不知道怎么会认为它是一种算法。它是由中国台湾的,记住是中国的台湾(⊙o⊙)…,Chih-Chung Chang和Chih-Jen Lin等人开发的,他们用多种语言实现写了LibSVM。
我把这一篇放到Weka开发里讲,主要讲它怎么和Weka结合,Weka中并不是没有SVM算法,Weka中有SMO算法的实现。
Weka and LibSVM are two efficient software tools for building SVM classifiers. Each one of these two tools has its points of strength and weakness. Weka has a GUI and produces many useful statistics (e.g. confusion matrix, precision, recall, F-measure, and ROC scores). LibSVM runs much faster than Weka SMO and supports several SVM methods (e.g. One-class SVM, nu-SVM, and R-SVM). Weka LibSVM (WLSVM) combines the merits of the two tools. WLSVM can be viewed as an implementation of the LibSVM running under Weka environment.
这一段是我从拷贝来的,请注意里面有一句话,LibSVM运行的比Weka里的SMO快的多,如果你敢用SMO算法去训练大数据集,你就明白天荒地老的真实含意了。其它和Weka结合的最主要的原因,我认为是,我们开始的时候往往都是用别的算法去试着做实验的(或者本来就需要多种基分类器),比如Naïve Bayes(LibSVM是比SMO快的多,可是比起来Naïve Bayes,它还是蜗牛),到最后又想试试LibSVM,这时就需要LibSVM库。
还有一点也是容易误解的就是Weka里的高版本,里面是有LibSVM这个分类器,但你如果直接想运行是会出错的,提示你没有设置路径。原因是:WLSVM can be viewed as an implementation of the LibSVM running under Weka environment.
先把LibSVM下载下来,上次竟然有人问我在哪下载,这种问题,我真是不想回答,不就是google一下吗?网址也放上:http://www.csie.ntu.edu.tw/~cjlin/libsvm/,下载WLSVM,解压后Lib文件夹下有一个LibSVM.jar的包,用和导入Weka.jar包相同的方式导入就好了,然后使用LibSVM和使用以前任何一种分类器的方式都是一样的。这里顺便带大家复习以下特征选择。
package com.cizito.weka.study; import java.util.Random; import weka.attributeSelection.CfsSubsetEval; import weka.attributeSelection.GreedyStepwise; import weka.classifiers.Evaluation; import weka.classifiers.bayes.NaiveBayes; import weka.classifiers.functions.LibLINEAR; import weka.classifiers.functions.LibSVM; import weka.classifiers.meta.AttributeSelectedClassifier; import weka.classifiers.trees.J48; import weka.core.Instances; import weka.core.converters.ConverterUtils.DataSource; import weka.filters.Filter; import weka.filters.supervised.attribute.AttributeSelection; /** * @author zhangwei * */ public class LibSVMTest { private Instances m_instances = null; private Instances selectedIns; public static void main( String[] args ) throws Exception { LibSVMTest filter = new LibSVMTest(); filter.getFileInstances( "D:/ProgramFiles/Weka-3-6/data/soybean.arff"); filter.selectAttUseFilter(); filter.selectAttUseMC(); } public void getFileInstances( String fileName ) throws Exception { DataSource frData = new DataSource( fileName ); m_instances = frData.getDataSet(); m_instances.setClassIndex( m_instances.numAttributes() - 1 ); } public void selectAttUseFilter() throws Exception { AttributeSelection filter = new AttributeSelection(); // package weka.filters.supervised.attribute! CfsSubsetEval eval = new CfsSubsetEval(); GreedyStepwise search = new GreedyStepwise(); filter.setEvaluator(eval); filter.setSearch(search); filter.setInputFormat( m_instances ); System.out.println( "number of instance attribute = " + m_instances.numAttributes() ); selectedIns = Filter.useFilter( m_instances, filter); System.out.println( "number of selected instance attribute = " + selectedIns.numAttributes() ); for( int i = 0; i < selectedIns.numInstances(); i++ ) { System.out.println( selectedIns.instance( i ) ); } } public void selectAttUseMC() throws Exception { AttributeSelectedClassifier classifier = new AttributeSelectedClassifier(); CfsSubsetEval eval = new CfsSubsetEval(); GreedyStepwise search = new GreedyStepwise(); J48 base = new J48(); NaiveBayes nb = new NaiveBayes(); LibSVM svm = new LibSVM(); LibLINEAR linear = new LibLINEAR(); classifier.setClassifier( svm ); classifier.setEvaluator( eval ); classifier.setSearch( search ); // 10-fold cross-validation Evaluation evaluation = new Evaluation( selectedIns ); evaluation.crossValidateModel(svm, m_instances, 10, new Random(1)); System.out.println("正确率为:" + (1-evaluation.errorRate())); System.out.println( evaluation.toSummaryString()); } }
好人做到底吧,顺便把LibSVM包上传,然后告诉大家其实新版的WEKA里面已经包含了LibSVM这个分类器了
相关推荐
LibSVM由Chih-Chung Chang和Chih-Jen Lin开发,是一个用于二类和多类分类以及回归任务的SVM库。"libsvm.jar"是该库的Java版本,可以被Java程序直接调用。LibSVM的主要优点在于其使用核技巧处理非线性问题,以及支持...
标题 "WEKA运行libsvm的libsvm.jar" 描述了一个在数据挖掘领域常见的操作,即如何在WEKA环境中使用libsvm库。这个过程涉及到两个关键组件:WEKA和libsvm,以及它们之间的集成方法。 首先,WEKA(Waikato ...
1. 首先,解压`libsvm-3.20.rar`和`wlsvm.zip`文件,获取相应的JAR文件。 2. 打开WEKA工作台,进入“文件”>“加载库”选项。 3. 在弹出的对话框中,导航到libsvm和wlsvm的JAR文件位置,选中它们并点击“打开”。 4....
libsvm.jar是支持向量机(Support Vector Machine, SVM)的一个高效实现,由Chih-Chung Chang和Chih-Jen Lin开发。SVM是一种监督学习模型,常用于分类和回归分析,尤其在小样本和高维问题中表现出色。libsvm库提供了...
LibSVM(Library for Support Vector Machines)是由台湾大学的Chih-Chung Chang和Chih-Jen Lin开发的一个开源库,专门用于支持向量机(SVM)的学习和预测。SVM是一种强大的监督学习模型,尤其在分类和回归任务上...
而Libsvm(Library for Support Vector Machines)是另一个著名的库,由Chih-Chung Chang和Chih-Jen Lin开发,专门用于支持向量机(SVM)的学习和预测。SVM是一种强大的监督学习模型,尤其适用于小样本和高维空间中...
Weka是新西兰怀卡托大学开发的一个开源数据挖掘工具,它提供了各种机器学习算法,包括SVM。SVM是一种强大的监督学习模型,广泛应用于分类和回归任务,尤其在处理高维数据和小样本问题时表现出色。 **描述解析:** ...
Weka开发[7]-LibSVM 17 Weka开发[8]-ID3源码介绍 18 Weka开发[9]—KMeans源码介绍 21 Weka开发[10]—NBTree源码介绍 25 Weka开发[11]—J48源代码介绍 31 Weka开发[13]-Ensemble 39 Weka开发[14]-...
LIBSVM 是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的 SVM 模式识别与回归的软件包。它提供了编译好的可在 Windows 系列系统的执行文件,还提供了源代码,方便改进、修改以及...
LibSVM则是由台湾大学开发的一个支持向量机(SVM)库,广泛用于分类和回归任务。 描述中提到"使用weka封装libsvm并在程序中调用所需要的三个文件",这意味着用户想要将LibSVM集成到Weka中,以便利用Weka的图形用户...
LibSVM是由Chih-Chung Chang和Chih-Jen Lin开发的一个强大的、高效的开源库,专门用于实现支持向量机(Support Vector Machines, SVMs)算法。SVM是一种监督学习模型,广泛应用于分类和回归问题,尤其在处理小样本和...
在Windows系统中,这个文件通常是“%ProgramFiles%\Weka-3-6\RunWeka.ini”,在Linux或Mac上,可能位于“/usr/local/weka/RunWeka.ini”。打开这个文件,找到`-classpath`选项,然后在路径中添加`.;lib/wlsvm.jar;...
另外,`libsvm-3.31.zip`是LibSVM的源代码和预编译库文件,包含了最新的3.31版本。这个版本可能包含了一些性能改进和新特性。而`liblinear-2.46.zip`则是LibLinear的源代码和库文件,LibLinear是LibSVM的一个分支,...
下面将详细介绍标题和描述中提及的各个jar包及其在Weka开发中的作用。 1. weka.jar:这是Weka的核心库,包含了Weka的主要数据预处理、分类、回归、聚类和关联规则等算法。它提供了丰富的API供开发者调用,可以方便...
LibSVM是由台湾大学的Chih-Chung Chang和Chih-Jen Lin开发的一款高效、灵活的开源软件,专门用于支持向量机(Support Vector Machines, SVM)。SVM是一种监督学习模型,能够处理线性和非线性问题,适用于小到中等...
LibSVM,全称为“Library for Support Vector Machines”,是由台湾大学的Chih-Chung Chang和Chih-Jen Lin开发的一款开源软件,主要用于支持向量机(SVM)的学习与预测。这款工具广泛应用于分类、回归以及异常检测等...
在使用Weka之前,需要配置好开发环境。需要安装MyEclipse2013,Weka3.6,libsvm3.18和Jdk1.7。在Win8.1系统上可以正常运行。 二、使用Weka实现分类器 1. 首先,需要将Weka的jar包添加到项目的编译路径中。可以将...
《支持向量机(SVM)的libsvm-3.12详解》 支持向量机(Support Vector Machine,简称SVM)是一种广泛应用于分类和回归分析的机器学习算法,以其优秀的泛化能力和处理高维数据的能力而备受青睐。本文将深入探讨...
《SVM与决策树在Java中的应用:libsvm-2.88-string.zip解析》 支持向量机(Support Vector Machine, SVM)是一种强大的监督学习算法,广泛应用于分类和回归问题。在Java环境中,SVM的实现往往依赖于开源库,如...