最近学习使用libsvm,刚开始在安装时出了写小问题,现把过程总结如下:
1、下载matlab的libsvm程序压缩包:libsvm-mat-3.0-1.zip,解压缩到一目录下如;libsvm-mat-3.0.1
2、在此目录下有一个readme文件,明确指出对于windows平台已经预先编译好了svmtrain.mexw32和svmpredict.mexw32,所以不需要再进行编译了。这时我把libsvm-mat-3.0.1加到MATLAB的路径目录下,尝试使用svmtrain命令,可报以下错误“Invalid MEX-file 'E:\Program Files\work\libsvm-mat-3.0-1\svmtrain.mexw32': 找不到指定的模块。”,其中E:\Program Files\work\libsvm-mat-3.0-1是我的工作目录。这时我考虑后,把libsvm-mat-3.0.1文件夹下四个mexw32后缀的mex文件复制到matlab安装目录下的bin\win32目录下。
3、然后再次尝试libsvm自带的例子:
>>load heart_scale.mat
>> model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
此时报告说找不到msvcr100.dll.
于是,我从网上找到msvcr100.dll的下载地址“http://www.dll-download-system.com/home/m-dlls-not-system-/msvcr100.dll/details.html”,下载解压缩文件后,把msvcr100.dll复制到C:\WINDOWS\system32目录下。
4、我再次尝试上面的命令,这次成功了。然后:
[predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model);
这时就可以看到预测的精度了:Accuracy = 86.6667% (234/270) (classification)
我从网上找了许多讲libsvm在MATLAB的安装的,很多文章都是摘抄别人的,也不写出处,更重要的是转录人也不验证,以致以讹传讹,使得很多初学者浪费学习的时间。该博文系本人原创,以上过程皆是我实际操作的过程,望有转录者表明博文出处。以端正研究风气,现在中国论文抄袭之风愈浓,我辈网民从小事做起,从自己做起,端正文风,则此抄袭之态可止矣。
如果本文对您有帮助,请给个评论。
2010-10-26注:经在另一台电脑上再次实验发现:第二步复制四个mexw32后缀的mex文件复制到matlab安装目录下的bin\win32目录下并不一定必须要做,如果出现invalid MEX file: .... 找不到指定的模块错误,只要做第三步的把msvcr100.dll复制到C:\WINDOWS\system32目录下也可以解决问题。