Linux下libsvm的安装及简单练习

引文:经常在看paper的时候,就看到svm算法,但是要自己来写真的是难于上青天呀!所幸有一个libsvm的集成软件包给我们使用,这真的是太好了。下面简单介绍下怎么来使用它吧!

LIBSVM是一个集成软件包,提供支持向量机分类(C-SVC,nu-SVC),回归(epsilon-SVR,nu-SVR)以及分布估计(one-class SVM).工具包支持多类分类问题。LIBSVM是台湾大学林智仁(LinChih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包。

1.libsvm的下载

libsvm下载
libsvm下载地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
数据集下载地址 http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/
说明:我自己是在windows下下载的,然后通过ftp软件将libsvm安装包上传到Linux下。

也可以在linux下使用wget来下载。

2.解压缩

解压缩到任一目录下,这里我解压到/home/xxxxxx/libsvm-2.91。/home/xxxxxx/是我的用户目录,xxxxxx是用户名。

tar –zxvf libsvm-3.20.tar.gz 

官网上提供了软件包及各种其它工具的下载。

3.编译

拿到软件包的第一件事就是阅读README,面对“读我……读我”这么热情的呼唤你难道无动于衷?

On Unix systems, type make‘ to build thesvm-train’ and `svm-predict’
programs. Run them without arguments to show the usages of them.

进入到/home/xxxxxx/libsvm-3.20,输入命令

make 

4.运行libsvm

下来解释一下libsvm的程序怎么用.你可以先拿libsvm 附的heart_scale来做输入,底下也以它为例,看到这里你应该也了解使用 SVM 的流程大概就是:

  • 1.准备数据并做成指定格式 (有必要时需 svmscale)
  • 2.用svmtrain来训练成 model
  • 3.对新的输入,使用 svmpredic来预测新数据的类别

4.1 svm-train

svmtrain 的语法大致就是:

svm-train [options] training_set_file [model_file]

training_set_file 就是之前的格式,而 model_file 如果不给就会叫[training_set_file].model.options 可以先不要给。

下列程序执行結果会产生 heart_scale.model 文件:(屏幕输出不是很重要,沒有错误就好了)
运行代码:

./svm-train heart_scale

输出结果

======================
optimization finished, #iter = 219
nu = 0.431030
obj = -100.877286, rho = 0.424632
nSV = 132, nBSV = 107
Total nSV = 132

======================

5.2 svm-predict

svmpredict 的语法是 :

svm-predict  test_file model_file  output_file
  • (1)test_file就是我们要预测的数据,它的格式svmtrain的输入,也就是training_set_file是一样的,不过每行最前面的label可以省略(因为预测就是要预测那个label)。但如果test_file有label的值的话,predict完会顺便拿predict出来的值跟test_file里面写的值去做比对,这代表:test_file写的label是真正的分类结果拿来跟我们预测的结果比对就可以知道预测的效果。所以我们可以拿原training set当做test_file再丟给svm-predict去预测(因为格式一样),看看正确率有多高,方便后面调参数.其它参数就很好理解了
  • (2)model_file就是svm-train出来的文件;

heart_scale.out:
运行代码

./svm-predict heart_scale heart_scale.model heart_scale.out

得到输出:

=====================================
Accuracy = 86.6667% (234/270) (classification)
Mean squared error = 0.533333 (regression)
Squared correlation coefficient = 0.532639(regression)

=====================================

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。