MATLAB R2021b 安装libsvm

MATLAB R2021b 安装libsvm

  • 前言
  • 一、下载安装libsvm
    • 1、下载libsvm
    • 2、解压libsvm
    • 3、设置MATLAB路径
    • 4、编译可能遇到的问题
    • 5、编译
  • 二、测试
  • 三、使用小技巧
    • 1、libsvm标准格式转换工具
    • 2、数据归一化
    • 3、训练及预测
    • 4、寻找最优参数
  • 参考


前言

处理器:AMD Ryzen 9 5950X 16-Core Processor 3.40 GHz
操作系统:Windows 10 专业版
版本号:21H1
内部版本:19043.1645
MATLAB版本:2021b


一、下载安装libsvm

1、下载libsvm

libsvm官网:https://www.csie.ntu.edu.tw/~cjlin/libsvm

在这里插入图片描述
我当时点了前两个下载链接没反应,最后点的github连接下载的

2、解压libsvm

将下载的压缩包解压然后复制到MATLAB安装目录的toolbox下
MATLAB R2021b 安装libsvm_第1张图片

3、设置MATLAB路径

在这里插入图片描述
点添加并包含子文件夹,选择刚才的libsvm-master文件夹,点确定后会自动将下面的子文件夹也添加进来
MATLAB R2021b 安装libsvm_第2张图片

4、编译可能遇到的问题

在matlab命令行中输入mex -setup -v 查看一下电脑中有啥编译器
MATLAB R2021b 安装libsvm_第3张图片
结果啥都没有

根据谦恭的博客:https://blog.csdn.net/github_35807147/article/details/80725642
安装以MinGW64 Compiler (C++)为例:
1.首先下载并且安装TDM-GCC:
http://tdm-gcc.tdragon.net/download
2.最好安装在C盘根目录下,目录中不要有空格,安装时默认勾选Add to PATH,就不需要后面再配环境变量
MATLAB R2021b 安装libsvm_第4张图片
3.在MATLAB的命令行中敲入命令:
setenv(‘MW_MINGW64_LOC’,‘C:\TDM-GCC-64’)

此时再运行前面的那句
mex -setup -v
就可以看到下图结果,编译器已经有了
MATLAB R2021b 安装libsvm_第5张图片

5、编译

将MATLAB的当前文件夹切换到libsvm-master/matlab目录:
MATLAB R2021b 安装libsvm_第6张图片
输入make并运行
MATLAB R2021b 安装libsvm_第7张图片
出现了很多警告但也多了四个文件,应该是编译成功了

二、测试

将Libsvm-master文件夹下的测试数据集heart_scale复制到Libsvm\matlab下,后续的操作将在该文件夹下进行,同时将MATLAB工作路径转至该文件下
然后输入:

[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);

得到结果如下,应该是安装成功了
MATLAB R2021b 安装libsvm_第8张图片

三、使用小技巧

1、libsvm标准格式转换工具

libsvm的数据集格式是:
标签 1:特征值1 2:特征值2…
可以借助excel实现标准格式转换,百度网盘链接如下:
http://pan.baidu.com/s/1eSKebYU
DADADA开飞机的DATA的简书地址:LIBSVM之svm-train

excel里点击菜单栏视图,宏——查看宏
MATLAB R2021b 安装libsvm_第9张图片
点击FormatDataFromLibsvm,执行,就会将数据转换为标签在最后一列的格式,如下图所示:
MATLAB R2021b 安装libsvm_第10张图片
点击FormatDataToLibsvm就会将数据转换为libsvm的标准格式,如下图所示:
MATLAB R2021b 安装libsvm_第11张图片
转换完后可以将excel的内容另存为txt文件(excel另存为有俩种txt格式,建议使用文本文件(制表格分割))

2、数据归一化

SVM对数据大小是敏感的,一般都需要先将特征进行归一化,如缩放到(0,1)区间,在libsvm-3.23\windows文件夹有一个svm-scale.exe 的执行程序,该exe文件双击无法使用。需要在windows cmd 里运行(按住windows+R,输入cmd即可)
MATLAB R2021b 安装libsvm_第12张图片
将转换好的txt文本复制到该目录,将cmd里路径调至该文件夹(可将文件夹直接拖入cmd,手动输太xxx的长了);
也可在windows文件夹下按住shift,右键,在此处打开powershell窗口,则路径自动在当前目录下:
MATLAB R2021b 安装libsvm_第13张图片
输入.\svm-scale.exe .\a.txt > a1.txt
大于号前后都有空格
在这里插入图片描述
MATLAB R2021b 安装libsvm_第14张图片

MATLAB R2021b 安装libsvm_第15张图片
可以看出默认被归一化到了(0,1)区间

3、训练及预测

将归一化好的a1.txt文件复制到libsvm-3.23\matlab 目录下:

[lable,im]=libsvmread('a1.txt');                                                    %读取文件
model=svmtrain(lable(1:8754),im(1:8754,:),'-s 4 -t 2 -c 1 -g 0.125');               %训练(12505条样本,选前70%作为训练集,即8754)
[prelabel,accuracy,decision_values]=svmpredict(lable(8755:12505),im(8755:12505,:),model); %预测(30%作为测试集,即8755-12505)

以上便是svm的简单使用

4、寻找最优参数

需要安装python和gnuplot;我的python版本是3.10;gnuplot下载了目前最新的版本gp543-win64-mingw.exe
gnuplot官网地址: http://www.gnuplot.info/ (就是个画图的工具,画c和g自动寻参的图,默认下一步安装就行,安装完看看和easy.py里第25行的调用路径一致否)
官网:
MATLAB R2021b 安装libsvm_第16张图片
下载:
MATLAB R2021b 安装libsvm_第17张图片
检查安装路径是否一致
MATLAB R2021b 安装libsvm_第18张图片
打开命令行,输入

python .\easy.py .\train.txt .\test.txt  

train.txt和test.txt分别存放着训练集和测试集,easy.py后面跟原始的测试集和训练集即可,会自己进行归一化等等操作;运行它则可自动调用svmscale.exe grid.py svmtrain.exe svmpredict.exe ,简单一步到位;会输出bestc和bestg和accuracy等
MATLAB R2021b 安装libsvm_第19张图片
期间会自动打开gnuplot画图,略卡,画完自己关闭,生成一些中间文件如下图。
MATLAB R2021b 安装libsvm_第20张图片
寻找最佳参数的过程如下图所示:
MATLAB R2021b 安装libsvm_第21张图片


参考

MATLAB libsvm 安装和使用
MATLAB安装配置libsvm(附MinGW64配置)
LIBSVM之svm-train

你可能感兴趣的:(机器学习,matlab,开发语言)