处理器:AMD Ryzen 9 5950X 16-Core Processor 3.40 GHz
操作系统:Windows 10 专业版
版本号:21H1
内部版本:19043.1645
MATLAB版本:2021b
libsvm官网:https://www.csie.ntu.edu.tw/~cjlin/libsvm
我当时点了前两个下载链接没反应,最后点的github连接下载的
将下载的压缩包解压然后复制到MATLAB安装目录的toolbox下
点添加并包含子文件夹,选择刚才的libsvm-master文件夹,点确定后会自动将下面的子文件夹也添加进来
在matlab命令行中输入mex -setup -v 查看一下电脑中有啥编译器
结果啥都没有
根据谦恭的博客: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,就不需要后面再配环境变量
3.在MATLAB的命令行中敲入命令:
setenv(‘MW_MINGW64_LOC’,‘C:\TDM-GCC-64’)
此时再运行前面的那句
mex -setup -v
就可以看到下图结果,编译器已经有了
将MATLAB的当前文件夹切换到libsvm-master/matlab目录:
输入make并运行
出现了很多警告但也多了四个文件,应该是编译成功了
将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);
libsvm的数据集格式是:
标签 1:特征值1 2:特征值2…
可以借助excel实现标准格式转换,百度网盘链接如下:
http://pan.baidu.com/s/1eSKebYU
DADADA开飞机的DATA的简书地址:LIBSVM之svm-train
excel里点击菜单栏视图,宏——查看宏
点击FormatDataFromLibsvm,执行,就会将数据转换为标签在最后一列的格式,如下图所示:
点击FormatDataToLibsvm就会将数据转换为libsvm的标准格式,如下图所示:
转换完后可以将excel的内容另存为txt文件(excel另存为有俩种txt格式,建议使用文本文件(制表格分割))
SVM对数据大小是敏感的,一般都需要先将特征进行归一化,如缩放到(0,1)区间,在libsvm-3.23\windows文件夹有一个svm-scale.exe 的执行程序,该exe文件双击无法使用。需要在windows cmd 里运行(按住windows+R,输入cmd即可)
将转换好的txt文本复制到该目录,将cmd里路径调至该文件夹(可将文件夹直接拖入cmd,手动输太xxx的长了);
也可在windows文件夹下按住shift,右键,在此处打开powershell窗口,则路径自动在当前目录下:
输入.\svm-scale.exe .\a.txt > a1.txt
大于号前后都有空格
将归一化好的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的简单使用
需要安装python和gnuplot;我的python版本是3.10;gnuplot下载了目前最新的版本gp543-win64-mingw.exe
gnuplot官网地址: http://www.gnuplot.info/ (就是个画图的工具,画c和g自动寻参的图,默认下一步安装就行,安装完看看和easy.py里第25行的调用路径一致否)
官网:
下载:
检查安装路径是否一致
打开命令行,输入
python .\easy.py .\train.txt .\test.txt
train.txt和test.txt分别存放着训练集和测试集,easy.py后面跟原始的测试集和训练集即可,会自己进行归一化等等操作;运行它则可自动调用svmscale.exe grid.py svmtrain.exe svmpredict.exe ,简单一步到位;会输出bestc和bestg和accuracy等
期间会自动打开gnuplot画图,略卡,画完自己关闭,生成一些中间文件如下图。
寻找最佳参数的过程如下图所示:
MATLAB libsvm 安装和使用
MATLAB安装配置libsvm(附MinGW64配置)
LIBSVM之svm-train