一、libSVM简介
libSVM是台湾林智仁(Chih-Jen Lin) 教授2001年开发的一套支持向量机库,这套库运算速度挺快,可以很方便的对数据做分类或回归。由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为目前国内应用最多的SVM的库。
libSVM的训练文本的格式
首先必须了解libSVM数据格式,格式如下:
Label 1:value 2:value ….
Label:是类别的标识,比如上节train.model中提到的1 -1,可以自己随意定,比如-10,0,15。当然,如果是回归,这是目标值,就要实事求是了。Value:就是要训练的数据,从分类的角度来说就是特征值,数据之间用空格隔开。如果特征值为0,特征冒号前面的(姑且称做序号)可以不连续。从编程的角度来说,这样做可以减少内存的使用,并提高做矩阵内积时的运算速度。
二、下载libSVM
https://www.csie.ntu.edu.tw/~cjlin/libsvm/
三、使用LibSVM制作鸢尾花数据集
打开svm-toy.exe程序,人工构建鸢尾花数据集
然后点击save保存为TXT文件,然后clear,重新画一份保存。
保存的文件格式如下:
四、编写代码进行分类训练
使用IDEA新建一个JAVA项目,在src下新建一个libsvm包,将下面的文件复制到刚建的libsvm包下:
再新建一个test包,将如下文件复制到test包下:
新建一个Test类。
IDEA项目结构如下:
在Test类里写入如下代码:
package test;
import java.io.IOException;
public