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)加载数据集
因为libsvm是台湾大学林智仁先生用C++语言写的,这里提供的heart_scale数据也是C++里直接运行的,要在matlab中使用,我们可以下载matlab使用的数据集:
http://download.csdn.net/detail/y999666/9470831,下载完成后直接拷贝在libsvm当前工作目录下即可。
还有一种方法就是使用使用matlab命令:
这是因为在libsvm 3.21中,需要指定读出来的数据存放名称,下面是正确的加载数据集代码:
这里还有一点需要注意的,这条代码需要在heart_scale所在目录下才可以运行正确,否则还是会报错:can’t open input file heart_scale
4)libsvm使用测试
现在我们来测试一下libsvm是否安装正确:
运行代码:
使用svmtrain函数,得到训练模型,结果显示数据的一些基本特征。
然后进行预测:
运行发现出现错误
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”才行。
所以使用如下代码:
并得到预测结果:Accuracy = 86.6667% (234/270) (classification)。
至此,我们已经成功安装并学会了libsvm3.21的基本操作。更多的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教程将在后续的文章中。
相关文章推荐
- 【matlab】:matlab的linspace函数解析
- MATLAB中bar3()函数画柱状图时按高度显示颜色
- 【matlab】:matlab画饼图和三维饼图
- Matlab的BwLabel实现
- sound,wavwrite函数的使用总结
- matlab基本知识点2
- Matlab中有15种基本数据类型
- Matlab 对路径的操作及读写文件
- Matlab padarray函数详解
- matlab ompbox安装教程
- Matlab 2015a 安装libsvm 3.21 步骤
- C/C++下调用matlab函数操作说明
- 绘制二元函数z=f(x,y)=(x^2-2*x)*exp(-x^2-y^2-x*y)的曲线及其三视图和三维表面图形
- 用鼠标左键绘制折线,利用鼠标中键或右键终止绘制
- 利用MATLAB绘制隐函数f(x,y)=x^2 * sin(x+y^2)+y^2 * exp(x+y)+5 * cos(x^2+y)=0的曲线
- 张量的展开与matlab下的工具包操作
- Matlab diff std setdiff exist
- MATLAB-Direct access of structure fields returned by a function call is not allowed 的解决方法~
- MATLAB中添加新的工具箱
- Matlab 2014a添加桌面快捷方式(ubuntu14.04 kylin)