一、先说明下liblinear和libsvm的区别
- LIBLINEAR 是线性核,LIBSVM可以扩展到非线性核(当也能用线性核,但同样在线性核条件下会比LibLinear慢很多)。
- 多分类:LIBLINEAR 是one vs all策略,LIBSVM是one vs one策略,后者的模型会大很多(特征数和样本数都很大,例如文档分类,一般使用线性核, LIBLINEAR比LIBSVM速度要快很多)。
- 模型的文件格式不兼容。
具体的可以参考下面这个博文写的很好:
https://www.cnblogs.com/zhizhan/p/5001411.html
二、LIBLINEAR 的下载以及安装
liblinear官方版本下载(打不开可能在维护,过段时间就好)
http://www.csie.ntu.edu.tw/~cjlin/liblinear/
最新版本号:liblinear-2.41
1.在matlab中设子路径。打开matlab,点击File->SetPath->Add withSubfolders,找到liblinear-2.41\matlab所在文件夹,点击save,点击close(我的是中文版,借用下网图)。
2. 选择编译器
Libsvm(liblinear)的原始版本使用c++写的,为了能在MATLAB平台下使用,需要用c++编译器编译。本机电脑上需要实现安装c++编译器(比如Microsoft Visiual C++或者更高版本),我这里使用的编译器是C++。(这个编译器的安装可以参考libsvm的编译器的安装)
注意:编译器的版本需要和你的MATLAB兼容。(有的网图已经老了,我就用中文版演示下)
下面我们来选择编译器:
在命令窗口输入:(注意里面有空格)
mex -setup
不用管warning,出现Done(MEX 配置为使用 ‘MinGW64 Compiler (C++)’ 以进行 C++ 语言编译。)说明你的编译器选择成功了。
3 .编译文件make
在命令窗口输入make
注意下这几个mexw64结尾的文件
4.替换Windows下的文件
再将子文件夹matlab中生成的libsvmread.mexw6,libsvmwrite.mexw64,svmpredict.mexw64,svmtrain.mexw64
复制替换到Windows目录下
5.测试
安装到底成不成功我们来进行测试,我们测试使用的是Libsvm(liblinear)自带的测试数据heart_scale.mat。现在Libsvm(liblinear)的软件包中没有heart_scale.mat这个文件,只有heart_scale这个文件,我们可以将heart_scale.mat从以前的版本中复制过来或者从网上找到。下面我们来测试一下
heart_scale.mat
链接:https://pan.baidu.com/s/15d5CxxJbWFQv_7TboOMUsg
提取码:1wyp
复制这段内容后打开百度网盘手机App,操作更方便哦
load heart_scale
model = libsvmtrain(heart_scale_label, heart_scale_inst, ‘-c 1 -g 0.07’);
[predict_label, accuracy, dec_values] = libsvmpredict(heart_scale_label, heart_scale_inst, model);
若出现以下结果,说明安装正确。
以上这些就表示我们Libsvm(liblinear)安装成功了。
需要注意的是Libsvm(liblinear)提供的测试数据在MATLAB平台下需要使用libsvmread进行格式转化。比如我们下载的数据是a1a,并且把它保存至当前目录所在位置。