Libsvm工具箱的使用

来源:互联网 发布:plc编程实例详解 编辑:程序博客网 时间:2024/05/06 22:59
不同版本的使用过程并不是一样的,所以一定好好读读官方的README!!!


 libsvm-3.21
1.设置路径

File->set path ->add with subfolders->加入libsvm-3.21文件夹的路径

2.选择编译器,在matlab下编译文件
  1. mex -setup
  2. 选择对应的编译器
  3. make
3.下载数据集并测试
  1. load heart_scale;  

Libsvm有两个数据集,一个是C++的, 一个是matlab的。libsvm库中下载的是C++数据,

所以matlab直接加载我们下载的heart_scale是会报错的

解决方法一:

使用给的一个函数,转化数据。此函数为libsvmread();
使用如下: [label_vector, instance_matrix] =libsvmread('filename');
在这里可以写成[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
注意:由于heart_scale在libsvm-3.21目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。

解决方法二:

下载旧版本的数据集http://download.csdn.net/detail/abcjennifer/4215779

将这点搞清楚了,下面就很简单了,具体代码如下:

1.[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');
2. model = svmtrain(heart_scale_label,heart_scale_inst); 
3. [predict_label,accuracy,decision_values] = svmpredict(heart_scale_label,heart_scale_inst,model,1);
测试结果:
Accuracy = 86.6667% (234/270) (classification)

注意事项:
1.设置的路径是libsvm-3.21文件夹所在的路径,为../libsvm-3.21:当前工作路径是程序运行的路径,为../libsvm-3.21/matlab
2.有人在测试时使用[predict_label,accuracy] = svmpredict(heart_scale_label,heart_scale_inst,model); 得不到结果,其实 [predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options') 这个函数有三个输出。改成[predict_label,accuracy,decision_values] = svmpredict(heart_scale_label,heart_scale_inst,model,1)试试
0 0