机器学习(七)LIBSVM应用:决策树训练

机器学习(七)LIBSVM应用:决策树训练

编译环境:IDEA

工具包:LibSVM

文章目录

  • 机器学习(七)LIBSVM应用:决策树训练
    • 一、原理
    • 二、应用
      • 0. 取得源码
      • 1. 利用LibSVM制作数据集
      • 2. 利用数据集实现模型训练并算出决策函数的数学公式
      • 3. 模型数据
      • 4. 决策函数的数学公式
    • 三、总结
    • 四、参考文章:

一、原理

请参考:https://blog.csdn.net/ChenJ_1012/article/details/121172777

二、应用

0. 取得源码

前往Libsvm官网下载代码,解压后如图所示:

机器学习(七)LIBSVM应用:决策树训练_第1张图片

1. 利用LibSVM制作数据集

  • 点击目录下的Windows文件夹,在文件夹中找到名为svm-toy.exe的运行程序点击运行

    机器学习(七)LIBSVM应用:决策树训练_第2张图片

  • 手动绘制数据集的点集

    机器学习(七)LIBSVM应用:决策树训练_第3张图片

    Change:改变点的颜色

    Run:运行渲染工具

    Clear:清除

    Save:存储数据集

    Load:加载数据集

    -t x -c y:使用x,y改变多项式poly函数的维度和惩罚参数C

  • 绘制完成后点击Run渲染图形然后点Save存储并命名数据集traintest.txt(别忘了命名文件格式)

机器学习(七)LIBSVM应用:决策树训练_第4张图片

2. 利用数据集实现模型训练并算出决策函数的数学公式

下载下来的libsvm工具包有很多中语音可以使用,这里我们使用的是java,所以进入java的目录底下,将里面的文件和包全部复制粘贴到IDEA新建的java项目中去并新建一个Test类用来训练模型。

项目列表如图

代码如下:

import java.io.IOException;
import java.sql.SQLOutput;

public class TEST {
     
    public static void main(String args[]) throws IOException {
     
        //存放数据以及保存模型文件路径
        String filepath = "输入你的存储路径";
        //C:\Users\12711\Desktop\TyporaHub
        /**
         * -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+"traindata.txt",filepath+"line.txt"};
        System.out.println("----------------线性-----------------");
        //训练函数
        svm_train.main(arg);

        arg[5]="1";
        arg[7]=filepath+"poly.txt";//输出文件路径
        System.out.println("---------------多项式-----------------");
        svm_train.main(arg);

        arg[5]="2";
        arg[7]=filepath+"RBF.txt";
        System.out.println("---------------高斯核-----------------");
        svm_train.main(arg);

    }
}

运行结果:

机器学习(七)LIBSVM应用:决策树训练_第5张图片
此外还输出了三个数据文件:线性,多项式和高斯核模型的数据

在这里插入图片描述

3. 模型数据

基本数据

  • svm_type :所选择的svm类型,默认为c_svc
  • kernel_type :训练采用的核函数类型,此处为RBF核
  • gamma :RBF核的参数γ
  • nr_class :类别数
  • total_sv :支持向量总个数
  • rho :判决函数的偏置项b
  • label :原始文件中的类别标识
  • nr_sv :每个类的支持向量机的个数
  • SV :各个类的权系数及相应的支持向量

线性模型

机器学习(七)LIBSVM应用:决策树训练_第6张图片

多项式模型

机器学习(七)LIBSVM应用:决策树训练_第7张图片

高斯核模型

机器学习(七)LIBSVM应用:决策树训练_第8张图片

分析结果可知多项式和高斯核训练的模型精度略高于线性。

4. 决策函数的数学公式

根据公式f(x)=wT*x+b以及模型数据可以求得最终的决策函数。

wT为向量的转置矩阵,即为模型数据中的SV
b为偏置常数,即为数据模型中的rho

三、总结

使用LibSVM工具可以直接通过求取数据来得到决策函数

四、参考文章:

醉意丶千层梦: 基于LibSVM得到决策函数

机智的橙子: LibSVM工具实现决策树训练

你可能感兴趣的:(人工智能与机器学习,python,opencv,机器学习)