一、下载LibSVM
LibSVM官网
下载完成解压后得到文件目录如下:
之后选择对应语言的代码:(这里我用的JAVA
)
创建一个项目,添加一个Test类,项目目录结构如下:
二、使用LibSVM工具准备数据
选择windows
文件夹,找到名为svm-toy.exe
的运行程序并运行
手动绘制数据集的点:
最后点击Save将数据保存为train.txt。
在原有基础上再次添加一点数据,保存为test.txt。
三、训练模型并写出决策函数的数学公式
Test类:
package Test;
import java.io.IOException;
import java.sql.SQLOutput;
public class Test {
public static void main(String args[]) throws IOException {
String filepath = "E:\\LibSvm_project1\\";
String[] arg = {"-s","0","-c","10","-t","0",filepath+"train.txt",filepath+"text.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);
}
}
运行项目,结果如下:
输出文件:
- train.txt训练数据
- text.txt线性模型
- poly多项式模型
- RBF高斯核模型
数据说明
- svm_type //所选择的svm类型,默认为c_svc
- kernel_type //训练采用的核函数类型,此处为RBF核
- gamma //RBF核的参数γ
- nr_class //类别数
- total_sv //支持向量总个数
- rho //判决函数的偏置项b
- label //原始文件中的类别标识
- nr_sv //每个类的支持向量机的个数
- SV //各个类的权系数及相应的支持向量
线性模型
多项式模型
高斯核模型
决策函数
公式:f(x)=SV*x+rho
- wT为向量的转置矩阵,即为模型数据中的SV
- b为偏置常数,即为数据模型中的rho