- 一、LibSVM概述
- 二、用LibSVM制作数据集
- 三、用IDEA建立项目进行训练
- 四、总结
- 五、参考资料
LIBSVM是台湾大学林智仁(LinChih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它 *** 作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(CrossValidation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。
- SVM用于模式识别或回归时,SVM方法及其参数、核函数及其参数的选择,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交互检验功能进行寻优。
- LIBSVM拥有C、Java、Matlab、C#、Ruby、Python、R、Perl、CommonLISP、Labview、php等数十种语言版本。最常使用的是C、Matlab、Java和命令行(c语言编译的工具)的版本。
-
打开制作数据集的工具
-
制作数据集
-
在上一步的基础上添加一些点生成新的数据集
-
在IDEA中新建一个项目,然后将下图所示文件全部复制到scr文件目录下
-
在项目之下新建一个名为test的package,将如下图的文件添加进去
-
在test package中新建一个Test类,并在其中添加如下代码:
package test; import java.io.IOException; public class Test { public static void main(String args[]) throws IOException { //存放数据以及保存模型文件路径 String filepath = "F:\SVM\"; String[] arg = {"-s","0","-c","10","-t","0",filepath+"first.txt",filepath+"line.txt"}; String[] arg1 = {filepath+"second.txt",filepath+"line.txt",filepath+"predict1.txt"}; System.out.println("----------------线性-----------------"); //训练函数 svm_train.main(arg); svm_predict.main(arg1); arg[5]="1"; arg[7]=filepath+"poly.txt";//输出文件路径 arg1[1]=filepath+"poly.txt"; arg1[2]=filepath+"predict2.txt"; System.out.println("---------------多项式-----------------"); svm_train.main(arg); svm_predict.main(arg1); arg[5]="2"; arg[7]=filepath+"RBF.txt"; arg1[1]=filepath+"RBF.txt"; arg1[2]=filepath+"predict3.txt"; System.out.println("---------------高斯核-----------------"); svm_train.main(arg); svm_predict.main(arg1); } }
-
得到的项目结构图如下
-
运行程序得到结果如下:
- 结果分析
optimization finished, #iter = 20 //20表示迭代次数,
nu = 0.06324266557131494 //核函数的参数
obj = -26.661864412550123, rho = -4.156694422061656
//obj是SVM转换为的二次规划求解得到的最小值对偶题的最优目标值,rho是决策函数
//sgn(w^x-rho)中的偏差项(也是b,wx+b)。
nSV = 6, nBSV = 3 //nSV是支持向量的个数,nBSV是边界上支持向量的个数
Total nSV = 6 //支持向量的总的个数
Accuracy = 89.20454545454545% (157/176) (classification) //精度 - 使用LibSVM工具进行线性,多项式,高斯核这三种分类训练后得到的数据文件:
线性核:
多项式:
高斯核:
对结果进行对比可以很容易看出来多项式和高斯核的精度高于线性。
四、总结决策树的数学公式: f(x)=SV*x+rho
本次实验用LibSVM进行决策树训练,相比之前最大的区别是可以自己建立数据集,调整不同的参数。然后结果更加清晰,一目了然。
五、参考资料LibSVM制作鸢尾花数据集
LibSVM
IntelliJ IDEA安装 *** 作步骤
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)