1. 程式人生 > >LibSVM 在matlab中的配置(包括SVDD、libsvm-faruto)

LibSVM 在matlab中的配置(包括SVDD、libsvm-faruto)

LibSVM的配置是初學LibSVM者遇到的最麻煩的問題,網上已經有很多關於配置的教程但是質量參差不齊,很多內容已過時,本人綜合網上的教程和自己的實踐,整理出更為實用簡潔的教程。

1. 需要的檔案或程式:

MATLAB2010b及以後版本、VS2010及以後版本(其他版本沒試過,這兩個的組合肯定可以。不要裝VC!裝了的儘量解除安裝乾淨再裝VS

其中libsvm庫是必須的,SVDD是官方給出的SVDD擴充套件包,faruto是faruto大神寫的libsvm擴充套件包,推薦使用。

2. libsvm安裝流程:

A.設定path

File->setpath ->add with subfolders->

加入libsvm-3.18資料夾的路徑

說明:在不同的matlab版本中加入路徑的方式不太一樣,但是都是找到setpath。這裡的libsvm-3.18是我使用的版本,自行修改。其實不需要把所有子目錄都加入進matlab路徑,只需要根目錄和與matlab相關的目錄就行,但是如果不懂的話就全加吧。


B. 在matlab中編譯

目的:將libsvm-3.18\matlab中 libsvmwrite.c 等 C++檔案編譯成 libsvmread.mexw64 等matlab檔案,這樣就可以在command window中被直接呼叫了。

注意:可能下載下來的資料夾中已經包含了libsvmread.mexw32或者libsvmread.mexw64等檔案,不用管他,這一步還是需要的。

方法是,在command window下輸入

mex -setup
這裡需要選擇編譯器,根據提示選擇就行。高版本的matlab和VS配合下這裡預設匹配好了。

然後需要輸入

make
然而大多數人會在這一步出錯,一個可能的原因是在已經新增的路徑裡不只有libsvm裡有make.m這個函式,matlab無法識別。解決方法是直接把libsvm3.18/matlab裡的make.m拖到command window下執行。

如果能看到一串success就是成功了。

C.檢測安裝結果

在其他教程中,這一步往往需要load一個data,然而這個data在某些libsvm版本中並不自帶。更簡潔的方法是直接在command window下輸入

svmtrain
如果出現瞭如下圖所示的畫面,就算安裝成功了

注意:原始版本的libsvm在-s引數下是沒有567的,我是安裝了SVDD拓展包所以有這三個。

至此,libsvm就算安裝成功了。

3.SVDD拓展配置

svdd是一種SVM衍生的單分類器,不熟悉的話就不用裝這個了。安裝的方法和前面基本相同。

下載svdd工具箱,目前使用libsvm3.18以及svdd3.18版本。

A.svdd工具箱裡面有一個matlab資料夾和3個檔案svm.cpp、svm.h、svm-train.c。

B.將matlab資料夾中的檔案svmtrain.c覆蓋原libsvm的matlab資料夾中的檔案。

C.將svm.cpp、svm.h、svm-train.c這3個檔案覆蓋libsvm資料夾下的相同檔案。

D.按本文剛開始講述的方法進行mex -setup、make等完成安裝,根據需要進行改名以及新增Path。

使用和上述同樣的方法驗證安裝是否成功,能看見-s下567的說明就算安裝成功了。

4.libsvm-faruto拓展配置

faruto大神為libsvm寫了一個拓展包,裡面包括了配套libsvm使用的各種函式。其中最有用的是cg引數尋優函式,免去了使用libsvm自帶的.py工具的麻煩。

安裝這個拓展包方法非常簡單,把解壓縮出來的資料夾目錄新增進matlab目錄裡即可,方法和新增libsvm目錄一樣。