愛悠閑 > 在MATLAB中安裝libsvm

在MATLAB中安裝libsvm

分類: 信號處理 模式識別  |  標簽: matlab,svr,svm,模式識別  |  作者: mghhz816210 相關  |  發布日期 : 2014-07-21  |  熱度 : 174°

轉自:http://www.dgvxxj.live/article/p-2089.html


搞了一天,看了很多資料,終于搞好了matlab中調用大牛寫好的svm庫,將結果告訴大家避免以后走彎路。

1. 參考網站:

libsvm庫下載:鏈接地址

視頻:鏈接地址 (有小問題,等下會提到)

詳解:鏈接地址


2. 操作流程:

請注意:詳細操作流程請參考上面的“詳解”網站,這里只說大框架和詳解里沒有提到的問題。

A.設置path

File->set path ->add with subfolders->加入libsvm-3.11文件夾的路徑

B. 在matlab中編譯

目的:將libsvm-3.11\matlab 中 libsvmwrite.c 等 C++文件編譯成 libsvmread.mexw32 等matlab文件,這樣就可以在command window中被直接調用了。

注意:在最外面的Readme中有提到已經有編譯好的文件,比如在libsvm-3.11\windows中也會看到libsvmread.mexw32,但這里不要被誤導!還是需要你自己再編譯一遍的!(還有如果matlab版本太低,如matlab 7.0是不能用VS作為編譯器的,只能用VC++ 6.0,這是我勸你給matlab升級吧!別裝vc了~我就是這樣,升級到Matlab 2011b就可以用VS2008做編譯器了

C.加載數據集

就是這里搞了我一下午!

加載數據集

有兩個數據集,一個是C++的, 一個是matlab的。libsvm庫中下載的是C++數據,

所以matlab加載我們下載的heart_scale是會報錯的:<這就是視頻中遺漏的小問題>

  1. ??? Error using ==> load  
  2. Number of columns on line 3 of ASCII file D:\ZJU projects\machine learning\libsvm-3.11\heart_scale must be the same as previous lines.  
這時怎么辦?

法1、下載matlab數據集(鏈接地址

法2、用libsvmread而非load,就是這里


這樣就可以加載數據集了,完成該步驟后發現Workspace中出現了heart_scale_inst 和 heart_scale_label,說明正確。

ok,下一步我們來測試svm的訓練和predict

D.train & predict

  1. model = svmtrain(heart_scale_label,heart_scale_inst);  
  2. [predict_label,accuracy] = svmpredict(heart_scale_label,heart_scale_inst,model);  
可以看到結果:

  1. Accuracy = 86.6667% (234/270) (classification)  



=========================MAC 版如何在matlab中使用libsvm=========================

下面說下mac怎么用libsvm,這里的問題是mex -setup的問題,需要安裝一個補丁。

1. mac中安裝xcode

2. xcode的preference中裝command line tools

3. 下載最新補丁http://www.mathworks.cn/support/solutions/en/data/1-FR6LXJ/

4. 在matlab命令行輸入>>cd(matlabroot)

5. 在matlab命令行輸入這個打補丁

>>!unzip -o ~/Downloads/optsPatch_MACOSX8.patch

6. 可以運行mex -setup了,選擇將原來的gcc覆蓋掉

7. 到libsvm/matlab進行make

就搞定啦!



具體參考:http://bbs.weiphone.com/read-htm-tid-5787323.html



就OK了。祝大家成功快速實現!


快乐彩中奖说明