红联Linux门户
Linux帮助

在ubuntu下的Matlab中使用libsvm

发布时间:2016-06-11 15:13:53来源:linux网站作者:pengpeng

事情的起因当然是因为一个错误,我平时一直在windows下用libsvm,当把程序放到安装了Ubuntu的服务器上就报错了,错误如下:
Error using svmtrain (line 233)
Y must be a vector or a character array.


这个错误出现在matlab自带svmtrain文件,没有调用libsvm下的相应文件,以错误提示为关键词搜索,网上的解释大多是建议添加libsvm文件夹到当前工作目录,添加后仍没有变化。
于是改变搜索关键词为“linux下使用libsvm”,网上的解释为需要从新编译,即命令行下进入libsvm所在目录运行make,但有时会出现错误,结果就遇到了,错误提示是:

g++ -Wall -Wconversion -O3 -fPIC -c svm.cpp

make: g++: Command not found

make: *** [svm.o] Error 127


解决办法是安装g++编译器,在命令行输入 sudo apt-get install g++,注意此时需要有root权限,事实上这一步之前我并不知道g++编译器是何物,所以按照网上的介绍,为了安装g++编译器我还需要安装build-essential package,方法是在命令行依次执行如下:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential
$ gcc -v
$ make -v


因为现在我的libsvm已经正常运行,所以安装build-essential这一步的必要性无从验证,如果直接sudo apt-get install g++不报错的化,这一步可以省掉。


接下来在matlab命令行中,进入libsvm目录下的matlab目录,执行make,然后当然要把libsvm目录set path到工作目录下就可以.m文件中调用的svmtrain命令了。


其实我在这一步之前还走了一段弯路,因为搜索的关键词是“linux下使用libsvm”,所以网上的讲解是在命令行下进入libsvm目录然后执行make,之后在这一目录下可以用命令行进行训练,而命令行的调用格式是"./svm-train heart_scale",注意“./”不能少,而svm-train在.m文件中无法调用,我一度想把.mat文件中的特征转换成文本文件,格式如下“类别标签 1:第一维特征 2:第二维特征 ...“。后来想到需要调用的svmtrain在libsvm目录下的matlab目录中,重要的是该文件夹下还有一个make.m文件,于是在matlab命令行下运行他就ok了。


本文永久更新地址:http://www.linuxdiyf.com/linux/21431.html