libsvm之(一)安装与测试(matlab)

来源:互联网 发布:java培训班 编辑:程序博客网 时间:2024/04/28 15:40

作为一个晚起步的小伙子,得以站在大牛们的肩膀上快速入门。为了以防自己忘记,同时让其他人系统性的libsvm入门更加快速,这就开启一个系列了。 
(这里会参考一篇帮助很大的blog:http://blog.csdn.net/abcjennifer/article/details/7370177,不单单是SVM,很多机器学习以及图像处理方面的问题我都从这里学到很多。)

Libsvm是什么? 
LIBSVM台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。

Step 1. 下载 
libsvm库下载http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 
注意: 
1、找到网站中“Download LIBSVM”这个小标题的位置,进行libsvm工具的下载,下载下来的将是zip file或者ar.gz格式。 
2、下载解压后,我们会看到两个最核心的函数“svm-train”(用来建立模型)以及“svm-predict”(用来预测)。

Step 2. 配置 
a. 设置路径 
首先需要将Matlab的工作路径调整到libsvm工具箱所在的文件夹。(否则将会出现 ??? undefined function or variable…) 
b. 配置编译器 
这一个操作是为了将libsvm工具包中的原来C++写的代码编译后为Matlab使用。(这里首先本机需要有预装的C++编译器,比如实现安装好Visual Studio。)下面要做的是在控制窗口输入: 

>>mex -setup

然后我们会看到:

Welcome to mex -setup.  This utility will help you set up  a default compiler.  For a list of supported compilers, see  http://www.mathworks.com/support/compilers/R2013a/win64.html Please choose your compiler for building MEX-files: Would you like mex to locate installed compilers [y]/n?

这里我们选择是,输入“y”,会让我们选择编译器:

Select a compiler: [1] Microsoft Visual C++ 2010 in C:\Program Files (x86)\Microsoft Visual Studio 10.0 [0] None Compiler: 

对于我的电脑,选择“1”并确认,会得到一大段文字,当我们在里面找到“Done … ”这样的关键字以后,说明我们的编译器选择成功了。 

c. 编译文件 
由于需要在Matlab下使用libsvm工具包,因此要先将当前路径调整到待编译的文件集中的“libsvm-3.20\matlab”的路径下。 
然后我们输入: 

>> make 
可以看到文件夹中生成了一些以“.mexw32”为后缀的文件,这就是编译完成后可供我们调用的函数,但是由于编码的问题我们无法以文档的形式直观地查看里面的代码。

Step 3. 测试 
a. 加载数据 
供测试用的数据在工具包主文件夹中就有,名字是”heart_scale“,包含两个文件(一个是270*13的样本,一个是270*1的标签)。 
注意: 
libsvm库中下载的是C++数据,所以如果我们直接使用“load heart_scale”是会报错的。 
所以我们需要使用的是”libsvmread()“这个函数进行读取。使用方法如下: 

[label_vector, instance_matrix] = libsvmread('filename'); 
所以我们输入: 
[heart_scale_label,heart_scale_inst] = libsvmread('heart_scale'); 
将在Workspace中得到上述的两个文件。 
b. 训练 
这里我们将用到”svmtrain“的模型训练函数,使用方法如下: 
model = svmtrain(training_label_vector, training_instance_matrix, 'libsvm_options'); 
由于只是测试我们不要求很好的参数,因此可以按如下参数进行输入: 
model = svmtrain(heart_scale_label , heart_scale_inst); 
将得到类似如下的信息:
*optimization finished, #iter = 162nu = 0.431029obj = -100.877288, rho = 0.424462nSV = 132, nBSV = 107Total nSV = 132

到此为止证明我们的libsvm已经安装成功了。 

c. 预测 
作为锦上添花的一步,我们用刚刚训练好的model来对数据进行一个预测。我们把训练用的样本同样作为我们的测试样本,输入如下: 

>> [predict_label] = svmpredict(heart_scale_label,heart_scale_inst,model);
将得到包含准确率的信息: 
Accuracy = 86.6667% (234/270) (classification)


blog内容参考视频:http://v.youku.com/v_showMini/id_XMjc2NTY3MzYw_ft_131.html

0 0