一、LibSVM简介

LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包。

LIBSVM不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。


二、LibSVM下载

官网下载地址:https://www.csie.ntu.edu.tw/~cjlin/libsvm/
在这里插入图片描述
解压文件
在这里插入图片描述


三、构建数据集并获得决策函数

  1. 启动LibSVM,点击Windows文件下,启动svm-toy.exe
    在这里插入图片描述
    在这里插入图片描述
  2. 手工绘制数据集
    在这里插入图片描述
  3. 点击Save,将数据保存为train.txt
    在这里插入图片描述
  4. 新建一组数据集作为测试集test.txt
    在这里插入图片描述
    在这里插入图片描述
  5. IDEA新建Java项目
    将Java文件夹下libsvm文件夹拷贝到项目src下
    新建Test类,并把指定文件添加到包内
    在这里插入图片描述
    新建Test类,并添加代码
package test;

import java.io.IOException;

public class test {
    public static void main(String args[]) throws IOException {
        //存放数据以及保存模型文件路径
        String filepath = "D:\\Code\\libsvm-3.25\\x\\";
        /*
         * -s 设置svm类型:默认值为0
         *          0– C-SVC
         *          1 – v-SVC
         *          2 – one-class-SVM
         *          3 –ε-SVR
         *          4 – n - SVR
         *
         * -t 设置核函数类型,默认值为2
         *          0 --线性核
         *          1 --多项式核
         *          2 -- RBF核
         *          3 -- sigmoid核
         *
         * -d degree:设置多项式核中degree的值,默认为3
         *
         * -c cost:设置C-SVC、ε-SVR、n - SVR中从惩罚系数C,默认值为1;
         */
        String[] arg = {"-s","0","-c","10","-t","0",filepath+"train.txt",filepath+"line.txt"};
        String[] arg1 = {filepath+"test.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);

    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输出文件

data.txt训练数据
line.txt线性模型
poly多项式模型
RBF高斯核模型

在这里插入图片描述
线性模型:
在这里插入图片描述
多项式模型:
在这里插入图片描述
高斯核模型
在这里插入图片描述
决策树:
在这里插入图片描述


总结

通过本次实验,首先是学习了 libSVM的背景、原理、训练文本的格式,以及如何用libsvm绘制鸢尾花数据集图像的具体方法。并且libSVM使用也很方便。

参考

https://www.cnblogs.com/blogwww/p/9473360.html
https://blog.csdn.net/weixin_47554309/article/details/121389055

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐