您的位置:首页 > 其它

LibSVM-windows

2015-11-30 14:54 225 查看
本系列文章由 @YhL_Leo 出品,转载请注明出处。

文章链接: /article/3664484.html

官方Web: https://www.csie.ntu.edu.tw/~cjlin/libsvm/

GitHub: https://github.com/cjlin1/libsvm

Tutorial: http://ntu.csie.org/~piaip/svm/svm_tutorial.html

1 库组成

Dos下运行程序有编译好的
exe
文件可以直接运行。例如本人的
libSVM
(版本为3.20)解压在
E:\ClassTask\libsvm-3.20
目录下:




其中
heart_scale
文件是一个libSVM库提供的训练示例样本,打开后可以发现里面是一堆这样的数据:




很容易看出,数据集结构是:

[code]label vec{(index_1,value_1), ...(index_13, value_13)}


即两类观测值
+1
-1
,后面的13维向量是每个样本某一特征的特征值。

进入
windows
子文件夹下有:



其中包含四个
exe
文件:

svm-predict
:依照已经训练好的model ,输入新的数据,并输出预测新数据的类别。

svm-scale
:有时候特征值的波动范围比较大需要对特征数据进行缩放,范围可以自己定,一般是[0,1]或[-1,1]。

svm-toy
:图形界面,可以自己画点,产生数据,并显示/保存分类结果。

svm-train
:会接受特定格式的训练输入文件,产生一个model 文件。

2 svm-train

首先来看
svm-train
,在Dos下切换到
windows
目录下(
Win+R
->
cmd
->切换盘符,
cd
切换文件夹),后输入命令:

[code]> E:\ClassTask\libsvm-3.20\windows> svm-train ..//heart_scale ..//train.model


这里并没把
heart_train
文件拷入到
windows
下,而是在其前一层父目录中。如果已经拷到
windows
目录下,就无需
..//


回车后很快就会出现:



其中:

#iter
为迭代次数

nu
是选择的核函数类型的参数

obj
为SVM文件转换为的二次规划求解得到的最小值

rho
为判决函数的偏置项
b


nSV
为标准支持向量个数(0<ai<c)(0

nBSV
为边界上的支持向量个数(ai=c′)(a_i=c')

Total nSV
为支持向量总个数(对于两类来说,因为只有一个分类模型
Total nSV
= =
nSV
,但是对于nn类,
Total nSV
=∑ni=1 = \sum^n_{i=1}
nSV


打开
train_model
文件可以看到:



其中:

svm_type c_svc
:所选择的svm类型,默认为
c_svc


kernel_type rbf
:训练采用的核函数类型,此处为
RBF


gamma 0.0769231
RBF
核的参数γ\gamma

nr_class 2
:类别数,此处为两分类问题

total_sv 132
:支持向量总个数

rho 0.424462
:判决函数的偏置项
b


label 1 -1
:原始文件中的类别标识

nr_sv 64 68
:每个类的支持向量机的个数

SV
:以下为各个类的权系数及相应的支持向量

3 svm-predict

再看
svm-predict
,利用刚刚训练完成的模型就可以进行分类:

[code]> E:\ClassTask\libsvm-3.20\windows> svm-predict ..//heart_scale ..//train.model ..//train.out


回车后,就会得到一个生成文件
train.out
,同时Dos中也会输出分类精度:



即分类精度为86.6667%,而
train.out
文件打开后,每行只有
-1
1
表示样本的类别。

4 svm-scale

数据缩放的主要目的有两个:

防止某个特征过大或过小,从而在训练中起的作用不平衡;

为了计算速度。因为在核计算中,会用到内积运算或exp运算,不平衡的数据可能造成计算困难。

用法为:

[code]> svm-scale -l lower -u upper -y y_lower y_upper -s save_filename -r restore_filename filename


其中:

-l
:设定数据的下限值
lower
,缺省为-1

-u
:设定数据的上限值
upper
,缺省为+1

-y
:是否对目标值同时进行缩放,
y_lower
为下限值,
y_upper
为上限值

-s
:表示将缩放的规则保存为文件
save_filename


-r
:表示将按照已经存在的规则文件
restore_filename
进行缩放

filename
:待缩放的数据文件,文件格式按照libSVM格式

例如键入下面的指令:

[code]E:\ClassTask\libsvm-3.20\windows>svm-scale -s ..//scaled.out ..//heart_scale > ..//save.data


就会生成两个文件
scaled.out
save.data
,可以自行查看其中的内容。

5 svm-toy

svm-toy
是一个用户测试小工具,运行后如下:



随机用鼠标点一些点,然后点击
change
增加新的类别,例如随机画三类点:



点击
run
,可以得到分类结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: