LibSVM-windows


本系列文章由 @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下运行程序有编译好的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为标准支持向量个数 (0<ai<c)
  • nBSV为边界上的支持向量个数 (ai=c)
  • Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于 n 类,Total nSV =ni=1nSV

打开train_model文件可以看到:

其中:

  • svm_type c_svc:所选择的svm类型,默认为c_svc
  • kernel_type rbf:训练采用的核函数类型,此处为RBF
  • gamma 0.0769231RBF核的参数 γ
  • 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文件打开后,每行只有-11表示样本的类别。

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.outsave.data,可以自行查看其中的内容。

5 svm-toy

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

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

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
libsvm-3.17是一个机器学习库,用于支持向量机(Support Vector Machines)的训练和预测。你可以通过在libsvm的网站上下载libsvm-3.12.zip文件,并将其解压到任意目录下,最好是放在MATLAB工具箱中,比如D:\program files (x86)\MATLAB\R2014a\toolbox\libsvm-3.22下。另外,你还需要安装相关软件,包括python3.2、libsvm3.17和gnuplot,并将其分别安装在指定的目录下,例如python3.2安装在d:/Python32,libsvm3.17安装在D:\libsvm-3.17,gnuplot安装在D:\gnuplot。 要在Windows上使用libsvm-3.17,你需要在命令窗口中输入"make"命令。虽然可能会出现找不到svmtrain.exp和svmpredict.exp的提示,但只要在libsvm/matlab目录下生成了四个文件(libsvmread.mexw32、libsvmwrite.mexw32、svmtrain.mexw32和svmpredict.mexw32),你就可以将这四个文件复制到..MATLAB\R2014a\toolbox\libsvm-3.22\windows目录下,替换原来的文件。 总结起来,libsvm-3.17是一个机器学习库,用于支持向量机的训练和预测。你需要下载并解压libsvm-3.12.zip文件,安装相关软件,并复制生成的四个文件到指定目录中,以便在MATLAB中使用libsvm-3.17。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MATLAB R2014a 装 libsvm-3.17](https://blog.csdn.net/abc1942227359/article/details/77989988)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [python3.2+libsvm3.17的配置](https://blog.csdn.net/laoyaotask/article/details/22654989)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值