一、下载与安装libsvm
1.下载libsvm
- 下载地址:https://www.csie.ntu.edu.tw/~cjlin/libsvm/
- 下载后的结果:
- 对该压缩包进行解压,最好解压到matlab安装路径中的toolbox文件夹下,如下图所示:
注意:这里是 matlab 2020b 和 libsvm 3.32 (请注意版本的差异问题,版本的不一致或许可能 会造成安装出现问题)
2.设置路径
在 matlab 2020b 中设置 libsvm 3.32 所在的路径,如图所示
1. 打开MATLAB R2020b软件,然后找到 设置路径 选项
找到libsvm路径选中后,点击保存,然后点击关闭
3.编译libsvm 3.32
将libsvm的路径添加到matlab中,需要对libsvm中的文件进行编译,因为libsvm的开源代码不是matlab,是C语言、C++写的,所以需要对其进行编译,才能在matlab中对libsvm中的文件进行调用。
1.进入libsvm 3.32中malab文件夹所在的路径下(否则会编译不成功),在命令行窗口输入命令 mex -setup,按下 Enter键 运行会得到如图所示的结果(前提是已经安装了编译器,我是之前就已经安装过MingGW64 编译器了,如果运行该指令后报错,请看关于 编译失败可能的原因 中的解决办法)
补充:mex 是一个用于编译MEX文件的MATLAB命令,将源代码编译为MEX文件,以便在MATLAB中使用。MEX文件是一种可以在MATLAB中调用的二进制可执行文件,它可以使用C、C++、Fortan等语言编写,并与MATLAB的数据和函数进行交互。
2.如果第一步顺利的话,就在命令行窗口输入 make ,然后运行。得到如下图所示的结果就是编译成功了!
3.查看matlab左侧得到目录栏是否有 后缀为.mexw64 的文件(因为我的系统是Windows 64位的,在不同的系统编译完成后出现的文件后缀名结果不同,比如:Linux 64位系统上是.mexa64)出现,如果存在,那么就完成了libsvm的编译工作。
编译失败的可能原因:
1.最常见的一点就是没有安装编译器(注意:不同系统需要安装的编译器不一样哦,这里以介绍在Windows 系统下进行编译的编译器安装)
解决办法:请参考这位博主的博客 ,博客链接:Matlab 2020b 中安装与使用libsvm
应该可以解决问题。
2.这是我自己遇到的错误,很低级的一个错误,没有进入到matlab文件夹所在的路径下运行命令,导致出现如下的错误:
4.测试例子
进行完成第三步后,下面来测试一下是否能正常使用libsvm进行预测。
1.将libsvm 3.32文件下的测试数据集heart_scale复制粘贴到libsvm中matlab所在的文件夹下,如图所示:
2.依然是要进入到matlab路径下,此时在命令行窗口依次输入命令:
% 读取测试数据集heart_scale
[heart_scale_label,heart_scale_inst] = libsvmread(‘heart_scale’);
% 将读取的数据送入模型中
model = svmtrain(heart_scale_label,heart_scale_inst);
% 加载数据和模型进行预测
[predict_label,accuracy,dec_values] = svmpredict(heart_scale_label,heart_scale_inst,model);
运行结果如图所示:
好了,以上就完成了下载与安装 libsvm 3.32的所有步骤了!
二、使用libsvm 3.32
1.标准格式的转换
转换标准格式需要表格FormatDataLibsvm.xls(十分感谢博主 qq:843375677 博文中的链接:https://download.csdn.net/download/qq_31781741/10660504,以及这位善良好心的博主:https://www.jianshu.com/p/8dcde06319b1)
下载这个表格后最好用 Excel 打开(这里我使用的是Excel 2016),打开后是一张空表格(如果上方提示禁用宏,记得要启用宏),随便输入一些数据(第二列是标签),并找到 宏 如图所示:
选择下拉框中的 查看宏,弹出关于宏的界面,这里选择 FormatDataToLibsvm,点击执行即可
执行后的结果如下图所示:
此时在图中第一列是标签
最后将表格另存为txt格式的文本文件,文件名称随意,选择保存的类型为: 文本文件(指标符分隔),进行保存即可。如图所示,可以得到一个文件类型为txt的demo_data的文本文件:
通过上述的运行可以看到, 使用该表格时需要运行宏(通常在编译阶段之前就被执行),输入数据时最后一列为标签,转换完成后,标签转至第一列。
2.数据归一化
1.将刚才保存的demo_data文本文件复制粘贴到libsvm-3.32下的windows文件夹中(如果一开始就保存到这个路径下就不需要执行这一步操作)
2.你可以看到在windows文件夹中有后缀为.exe的可执行文件,但是双击后都是闪退的,无法直接双击运行,需要在 Windows 操作系统中的命令行解释器,也称为命令提示符cmd中进行执行。首先按下 win+R ,再输入cmd,点击确定,如图所示:
如下图所示,需要将保存的demo_data中的数据进行归一化处理,总共有4小步:
(注意:实际情况根据自己的文件路径进行操作,下面演示的是我的情况)
1.切换到E盘,按enter键
2.需要将路径切换到libsvm-3.32中的windows文件夹所在的路径(除了手动输入,可以如图所示操作,找到要切换文件的路径,将文件拖拽到cmd命令行解释器中,就可以自动获取到要切换到的路径),按enter键
3.输入命令,对demo_data进行数据归一化处理,按enter键
注意:其中第三句命令中的 “>” 这是重定向操作符,将命令的输出重定向到指定的文件
4.这是第三步按下enter键后返回的最终结果
最终,如果对demo_data文本文件归一化处理成功后会在windows文件夹中找到demo_data_1文件,默认归一化范围 [0,1] 或 [-1,1]
如图所示:
可以打开这两个文件,对比一下内容:
3.训练以及预测
libsvm主要用于做分类、回归任务,下面以回归任务为主介绍一下训练以及预测的过程
首先将归一化得到的 demo_data_1.txt 文件复制粘贴到 ibsvm-3.32\matlab 目录下,如图所示:
在matlab所在的路径下,在命令行窗口中输入以下命令:
% 读取文件demo_data_1.txt
[ lable,im ] = libsvmread ( ‘demo_data_1.txt’ ) ;
%训练模型
model = svmtrain ( lable(1:5),im(1:5,:),’-s 4 -t 2 -c 1 -g 0.125′ ) ;
%预测
[ prelabel,accuracy,decision_values ] = svmpredict (lable(6:10),im(6:10,:),model) ;
运行后的结果如下图所示:
还可以单独将返回的是三个值 prelabel , accuracy, decision_values 进行打印输出:
我还想对刚才的三句代码进行分析:
1.读取文件
[ lable,im ] = libsvmread ( ‘demo_data_1.txt’ ) ;
libsvmread函数用于从文件demo_data_1.txt中读取数据,这个文件中包含了支持向量机训练和测试所需的数据,读取后,标签lable和输入矩阵im将被赋值给相应的变量。
2.训练模型
model = svmtrain ( lable(1:5),im(1:5,:),’-s 4 -t 2 -c 1 -g 0.125′ ) ;
svmtrain 函数用于训练支持向量机模型
label(1:5)是前五个样本的标签
im(1:5,:)是前五个样本的输入矩阵
参数-s 4 表示使用epsilon-SVR模型,-t 2 表示使用径向基核函数(RBF kernel),-c 1 表示惩罚参数C的值为1,-g 0.125表示径向基核函数的gamma参数为0.125。
3.预测
[ prelabel,accuracy,decision_values ] = svmpredict (lable(6:10),im(6:10,:),model) ;
svmpredict 函数用于对新数据进行预测
label (6:10) 是测试集中的标签
im (6:10,:) 是测试集中的输入矩阵
model 是之前训练好的支持向量机模型
预测结果将会保存在 prelabel 变量中,预测的准确度保存在 accuracy 变量中,而决策值(decision values)则保存在 decision_values 变量中
注意:这里的 label(1:5) 和 im(1:5,:) 以及 label (6:10) 和 im (6:10,:) ,是根据demo_data_1.txt文件中的数据内容来写的,不是随意写的。
以上就是libsvm做回归任务的进行训练及预测的一个简单示例,剩下的就是参数寻优的过程了。
in the end,再次感谢以上在文中提到的博主!如果对你有用,麻烦关注一下我,给个赞吧,谢谢!
今天的文章matlab安装教程2019b_matlab如何安装工具包分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/79947.html