2022.3.20 星期天
[记录自己踩过的坑,不适用每个人]
matlab安装libsvm工具包
win10系统;matlab R2018a
一、libsvm工具包
1.下载libsvm工具箱,libsvm工具箱下载网站libsvm网站(LIBSVM -- A Library for Support Vector Machines (ntu.edu.tw)),或者直接从github上下载,一般是下载zip压缩文件,解压后如图。
其中有java,matlab和python 三种版本,以及测试数据集heart_scale,和readme说明文件(内有Libsvm的参数说明)。
2.由于是matlab,那么就需要将解压后文件夹里面的windows文件移动到matlab里面去,一般系统安装的matlab里面有toolbox文件。
3.在matlab中设置路径
4.以上步骤就安装的差不多的,接下来要看电脑有没有编译器。查看编译器的方法:
在matlab里面输入mex -setup/mex -setup -v(查找版本)出现这个则有编译器
(1若是能找到c++编译器,可直接尝试在命令行窗口输入make,执行make.m程序进行编译,完成后出现4个后缀为.mexw64文件)
(2若没能找到C++编译器,编译失败或者一系列不明error,请参考下第二部分:MinGW64配置 ,按其步骤进行)
make进行编译【注意:如果有z黄色警告模式,说明编译器和matlab的版本不适合,需要重新选择编译器的版本,或者下更高版本的matlab(但是我没管)】
5.测试
按照网上最常见的测试方法,来进行测试。
将Libsvm文件下的测试数据集heart_scale复制到Libsvm\matlab下,后续的操作将在该文件夹下进行,同时将MATLAB工作路径转至该文件下(在MATLAB中也可完成文件的复制粘贴工作)。
在命令行窗口输入:
注意:
1.测试svmtrain的输入第一个是标签,第二个数样本,跟matlab自带的svmtrain是相反的。
2.”svmtrain“调用svmtrain.exe,heart_scale存放训练样本的文件,train.model保存最后训练出来的模型。
[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);
如果输出为:
#iter:为迭代次数
nu: 为nu-SVC, one-class SVM, and nu-SVR三种类型SVM指定的核函数的参数,默认为0.5
obj: 为SVM文件转换为二次规划求解得到的最小值
rho: 为判决函数的偏置项b
nSV:为标准支持向量个数
nBSV: 边界上支持向量的个数
Total nSV :支持向量的总的个数
即为导入libsvm工具箱成功。
二、MinGW-w64 C/C++编译器下载和安装
MinGW-w64 C/C++编译器下载和安装_<SLF>的博客_mingw64
ps.过了一周后,可以查到已安装8.1的编译器但是matlab找不到编译器了,又重新下载低版本的还是找不到
解决方法:下载64位的TDM-GCC
如何在Matlab2018a中配置MinGW-w64 C/C++ 编译器_成都好吃的求推荐的博客
输入make,仍然是:
警告: 您使用的是不受支持的 MinGW 编译器版本。
很久很久以后....警告没有了……莫名奇妙的可以用了
2022.6.8 matlab2018突然崩了,换了matlab2019b,没有警告。
(21条消息) 错误使用 mex 未找到支持的编译器。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64 编译器 (2)_liuyanfang003的博客