基于LibSVM训练编写决策函数
一、原理
二、代码
1.下载LIbSVm
2.解压
3.选择对应语言代码
使用Java,故把java文件下的文件都引入到项目当中
4.准备数据
打开libsvm文件下的windows文件里面的svm-toy程序
5.进行训练
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.代码运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/47fe5dd154464ec09d718ab417a35f75.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAcXFfNDYxMzI0ODk=,size_20,color_FFFFFF,t_70,g_se,x_16)
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)=w T *x+b以及模型数据可以求得最终的决策函数。
w T 为向量的转置矩阵,即为模型数据中的SV
b为偏置常数,即为数据模型中的rho
四、总结
本次实验了解了 libSVM的背景、原理、训练文本的格式等,如何用libsvm绘制鸢尾花数据集图像,以及libSVM绘制图像的具体方法。
五、参考
https://blog.csdn.net/weixin_56102526/article/details/121390365?spm=1001.2014.3001.5501
https://blog.csdn.net/taohuaxinmu123/article/details/20370525