在前面的博文《初步體驗libsvm用法1(官方自帶工具)》:http://www.cnblogs.com/tornadomeet/archive/2012/04/12/2443993.html 中已經初步介紹了使用官方自帶的svm幾個exe文件來可視化操作分類問題,但是在實際編程中,svm的訓練和預測有可能只是項目工程的一部分,嵌入在其中了。我們不能單獨拿出來處理。所以libsvm需要與其他的計算機語言平台相結合。
這一節主要講libsvm在matlab下的初步體驗。
我的matlab版本為matlab(R2011b),c/c++編譯器為vs c++2010(32位)。這里需要注意的是下面將libsvm與matlab相結合的過程需要有c/c++編譯器,所以自己的電腦上必須裝有這些編譯器,一般常見的c/c+=編譯器matlab都會支持的。
下載libsvm:
在網站http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 下載libsvm最新版本3.12,解壓到相應目錄(此處解壓即安裝)。我將其解壓后放在c盤,即C:\Program Files\libsvm-3.12。
設置matlab搜索工作目錄:
打開matlab,file->Set Path->Add with Subfolders,然后定位到C:\Program Files\libsvm-3.12,注意這里最好定位到libsvm-3.12,而不要定位到libsvm-3.12子目錄matlab(也不知道是否可以,沒有試過)。點擊Save后單擊Close即可。
設置matlab當前目工作錄:
將matlab的Current Folder定位到剛剛libsvm-3.12下的matlab目錄,如我的:C:\Program Files\libsvm-3.12\matlab
選擇c/c++編譯器:
在matlab的終端輸入:met –setup,當出現Would you like mex to locate installed compilers [y]/n?提示時輸入y。然后提示讓你選擇c/c++編譯器,我這里輸入數字2,即vs c++2010。當出現Are these correct [y]/n?提示時,輸入y即可。當出現如下提示說明編譯器選擇成功:
當然上面成功的是因為我的編譯器安裝在系統默認的路徑下,如果網友的vs不是安裝在系統默認下則需要選擇n,然后自己手動更改安裝目錄,大家去嘗試下肯定會成功的。
在終端輸入make:
然后查看C:\Program Files\libsvm-3.12\matlab目錄下是否生成了libsvmread.mexw32,libsvmwrite.mexw32,svmtrain.mexw32,svmpredict.mexw32這4個文件,如果用,說明libsvm的matlab已經編譯成功了。
測試libsvm的matlab工具箱是否可用:
在命令行輸入下面命令:
load heart_scale;
model=svmtrain(heart_scale_label,heart_scale_inst)
[predict_lebel,accuracy]=svmpredict(heart_scale_label,heart_scale_inst,model)
則其model顯示為:
結果顯示為:
這說明libsvm在matlab中可以使用了。
參考文獻:http://www.matlabsky.com/thread-18080-1-1.html