LibSVM-windows
2015-11-30 14:54
197 查看
本系列文章由 @YhL_Leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/yhl_leo/article/details/50112477
官方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下运行程序有编译好的
其中
很容易看出,数据集结构是:
即两类观测值
进入
其中包含四个
2 svm-train
首先来看
这里并没把
回车后很快就会出现:
其中:
打开
其中:
3 svm-predict
再看
回车后,就会得到一个生成文件
即分类精度为86.6667%,而
4 svm-scale
数据缩放的主要目的有两个:
防止某个特征过大或过小,从而在训练中起的作用不平衡;
为了计算速度。因为在核计算中,会用到内积运算或exp运算,不平衡的数据可能造成计算困难。
用法为:
其中:
例如键入下面的指令:
就会生成两个文件
5 svm-toy
随机用鼠标点一些点,然后点击
点击
文章链接: http://blog.csdn.net/yhl_leo/article/details/50112477
官方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库提供的训练示例样本,打开后可以发现里面是一堆这样的数据:
很容易看出,数据集结构是:
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切换文件夹),后输入命令:
> E:\ClassTask\libsvm-3.20\windows> svm-train ..//heart_scale ..//train.model
这里并没把
heart_train文件拷入到
windows下,而是在其前一层父目录中。如果已经拷到
windows目录下,就无需
..//。
回车后很快就会出现:
其中:
#iter为迭代次数
nu是选择的核函数类型的参数
obj为SVM文件转换为的二次规划求解得到的最小值
rho为判决函数的偏置项
b
nSV为标准支持向量个数
nBSV为边界上的支持向量个数
Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型
Total nSV
nSV,但是对于类,
Total nSV
nSV
打开
train_model文件可以看到:
其中:
svm_type c_svc:所选择的svm类型,默认为
c_svc
kernel_type rbf:训练采用的核函数类型,此处为
RBF核
gamma 0.0769231:
RBF核的参数
nr_class 2:类别数,此处为两分类问题
total_sv 132:支持向量总个数
rho 0.424462:判决函数的偏置项
b
label 1 -1:原始文件中的类别标识
nr_sv 64 68:每个类的支持向量机的个数
SV:以下为各个类的权系数及相应的支持向量
3 svm-predict
再看
svm-predict,利用刚刚训练完成的模型就可以进行分类:
> 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运算,不平衡的数据可能造成计算困难。
用法为:
> 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格式
例如键入下面的指令:
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,可以得到分类结果:
相关文章推荐
- LibSVM-windows
- 协方差的意义和计算公式
- libpcap&tcpdump编译错误处理
- 用dos命令给mysql数据库新建表
- JiuDuOj——1020
- freebsd默认不是gcc构建
- Haaris角点检测
- 关于此博客叙述
- JS简单模拟触发按钮点击功能的方法
- 标准盒模型与IE盒模型之间的转换
- CryptoAPI简介(二)
- 矩阵特征值分解与奇异值分解含义解析及应用
- php生成curl命令行
- 使用 json 进行神经网络结构信息的格式化 (dump & load)
- leetcode Burst Balloons
- jsp获取系统时间
- 对android中ActionBar中setDisplayHomeAsUpEnabled和setHomeButtonEnabled和setDisplayShowHomeEnabled方法的理解
- 阻塞(=)和非阻塞赋值(<=)的不同
- BIOS中断大全
- 使用putty或者远程桌面连接远程服务器(Ubuntu)