前言
LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。
一、SVM下载及安装
1.SVM官网
2.SVM安装
1、解压官网下载的文件
如下图
2、选择语言
笔者使用IDEA,故采用的Java语言;
3、将Java文件中的文件移动到Idea项目中
项目结构如下:
3.数据生成
libSVM提供了生成数据的函数,通过修改idea执行main函数的文件为svm_toy.java即可
选择svm_toy.java
运行程序:
本次使用数据如下:
二、对数据进行libSVM分类
1.test类数据训练
import java.io.IOException;
import java.sql.SQLOutput;
public class test {
public static void main(String args[]) throws IOException {
//存放数据以及保存模型文件路径
String filepath = "D:\\libSVM\\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"};//data.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);
}
}
2.运行结果
1、线性
2、多项式
3、高斯核
总结
SVM用于模式识别或回归时,SVM方法及其参数、核函数及其参数的选择,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交互检验功能进行寻优。
LIBSVM拥有C、Java、Matlab、C#、Ruby、Python、R、Perl、Common LISP、Labview、php等数十种语言版本。最常使用的是C、Matlab、Java和命令行(c语言编译的工具)的版本。
参考
https://blog.csdn.net/qq_47281915/article/details/121307709?spm=1001.2014.3001.5501