基于LibSVM得到决策函数

本文详细介绍了如何利用LibSVM库在Java环境下训练线性、多项式和高斯核的SVM模型。首先,从官网下载并解压LibSVM,接着将Java代码引入项目,通过svm-toy程序生成训练数据。然后,在Test类中配置参数并调用svm_train进行训练,得到线性、多项式和高斯核的模型数据。最后,解析模型数据并理解决策函数的构建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、原理

svm算法可以参考博客基于Sklearn实现SVM算法

二、代码

1.下载LIbSVm

下载地址

2.解压

解压后文件如图
在这里插入图片描述

3.选择对应语言代码

我使用的是Java,故把java文件下的文件都引入到项目当中。
在这里插入图片描述
Idea中如图
在这里插入图片描述

4.准备数据

  1. 打开libsvm文件下的windows文件里面的svm-toy程序
    在这里插入图片描述

  2. 在程序中进行手工绘制数据并保存数据
    在这里插入图片描述

5.进行训练

新建个Test类用于训练
代码如下

package test;

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

public class Test {
    public static void main(String args[]) throws IOException {
        //存放数据以及保存模型文件路径
        String filepath = "G:\\IDEAProject\\Test\\";
        /**
         * -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+"data.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);

    }


}

运行代码进行训练

三、结果

1.代码运行结果

在这里插入图片描述

2.输出文件

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

在这里插入图片描述

3.模型数据

数据说明

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

线性模型

在这里插入图片描述

多项式模型

在这里插入图片描述

高斯核模型

在这里插入图片描述

4.决策函数

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

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

四、总结

可以使用libSVM处理决策函数

五、参考

https://blog.csdn.net/taohuaxinmu123/article/details/20370525

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值