一、下载LibSVM
链接:https://www.csie.ntu.edu.tw/~cjlin/libsvm/
二、用LibSVM制作鸢尾花数据集
1、解压下载的文件
2、打开libsvm-3.25\windows下的svm-toy
将数据集保存到指定文件夹
三、利用上述数据集实现模型训练并写出决策函数的数学公式
1、将Java文件夹下的以下文件复制到idea的新建项目中
在test中添加以下代码;
package test;
import java.io.IOException;
import java.sql.SQLOutput;
public class test {
public static void main(String args[]) throws IOException {
//存放数据以及保存模型文件路径
String filepath = "F:\\svmtest\\";
/**
* -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);
}
}
运行:
在F:\svmtest中生成以下文件
线性模型:
多项式模型
高斯核模型
决策函数
根据公式f(x)=wT*x+b以及模型数据可以求得最终的决策函数。
wT为向量的转置矩阵,即为模型数据中的SV
b为偏置常数,即为数据模型中的rho