利用LibSVM工具进行决策树训练

利用LibSVM工具进行决策树训练,第1张

利用LibSVM工具进行决策树训练

目录
  • 一、LibSVM概述
  • 二、用LibSVM制作数据集
  • 三、用IDEA建立项目进行训练
  • 四、总结
  • 五、参考资料

一、LibSVM概述

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语言编译的工具)的版本。
二、用LibSVM制作数据
  • 打开制作数据集的工具

  • 制作数据集

  • 在上一步的基础上添加一些点生成新的数据集

三、用IDEA建立项目进行训练
  • 在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安装 *** 作步骤

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5564270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存