您的位置:首页 > 编程语言 > MATLAB

libsvm for matlab安装与测试

2016-03-24 15:37 459 查看
1.libsvm下载

libsvm官方版http://www.csie.ntu.edu.tw/~cjlin/libsvm/

这里我下的是最新版的libsvm Version3.21(2015年12月14日更新)。

matlab下载:www.matlab.com我用的是MATLAB R2012a.

2.操作步骤:

1)设置path

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

2)在matlab中选择编译器(mex -setup)

目的:将libsvm-3.21\matlab 中 libsvmwrite.c 等 C++文件编译成 libsvmread.mexw64等matlab文件,使函数可以被直接调用。

3)加载数据集

>> load heart_scale


但是这里会报错:


Error using load
Number of columns on line 3 of ASCII file D:\matlab\libsvm-3.21\heart_scale


因为libsvm是台湾大学林智仁先生用C++语言写的,这里提供的heart_scale数据也是C++里直接运行的,要在matlab中使用,我们可以下载matlab使用的数据集:

http://download.csdn.net/detail/y999666/9470831,下载完成后直接拷贝在libsvm当前工作目录下即可。

还有一种方法就是使用使用matlab命令:

libsvmread('heart_scale');


这个时候还会报一种错误:


>> libsvmread('heart_scale');
Usage: [label_vector, instance_matrix] = libsvmread('filename');


这是因为在libsvm 3.21中,需要指定读出来的数据存放名称,下面是正确的加载数据集代码:

[heart_scale_label, heart_scale_instance] = libsvmread('heart_scale');


这里还有一点需要注意的,这条代码需要在heart_scale所在目录下才可以运行正确,否则还是会报错:can’t open input file heart_scale

4)libsvm使用测试

现在我们来测试一下libsvm是否安装正确:

运行代码:

model=svmtrain(heart_scale_label,heart_scale_instance);


使用svmtrain函数,得到训练模型,结果显示数据的一些基本特征。

然后进行预测:

svmpredict(heart_scale_label,heart_scale_instance,model);


运行发现出现错误

Usage: [predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model, ‘libsvm_options’)

[predicted_label] = svmpredict(testing_label_vector, testing_instance_matrix, model, ‘libsvm_options’)

Parameters:

model: SVM model structure from svmtrain.

libsvm_options:

-b probability_estimates: whether to predict probability estimates, 0 or 1 (default 0); one-class SVM not supported yet

-q : quiet mode (no outputs)

Returns:

predicted_label: SVM prediction output vector.

accuracy: a vector with accuracy, mean squared error, squared correlation coefficient.

prob_estimates: If selected, probability estimate vector.

网上很多帖子都没有出现这个错误,为什么呢?答案是版本不同,使用最新的libsvm3.21的时候需要指定“decision_values”才行。

所以使用如下代码:

[predict_heart_scale_label,accurracy,desc_value]=
svmpredict(heart_scale_label,heart_scale_instance,model);


并得到预测结果:Accuracy = 86.6667% (234/270) (classification)。

至此,我们已经成功安装并学会了libsvm3.21的基本操作。更多的libsvm教程将在后续的文章中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: