Libsvm入門

最近簡單學習了一下libsvm的使用。在這裏簡單記錄一下。

 

1. libsvm是幹嘛用的?

其實我覺得,會去用libsvm的人肯定知道它是幹嘛的,不知道它是幹嘛的人肯定不會去用它(我廢話好多)。總之,Support Vector Machine(SVM)是機器學習中一種classification的方法,而libsvm則實現了這種方法,直接用就行了。

 

2. 下載,配置

(以下針對Windows用戶)

下載zip網址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/, 解壓

解壓後的文件夾中有個windows文件夾,裏面有svm-scale.exe, svm-train.exe, svm-predict.exe, 這三個就是執行libsvm最重要的啦!你可以把這文件夾加到環境變量裏然後直接在cmd裏用這三個命令,或者把所有的數據,py文件和這三個exe文件都放到一個文件夾裏然後cmd裏cd到這個文件夾再執行。這個隨便不多講。

此外,最好再安裝一下python和gnuplot,在上面的網址也可以找到它們的安裝路徑。爲啥要安裝它們我一會兒會講到。

 

3. 基本使用

假設你有train_data, test_data

step 1: Training

>>svm-train train_data

(這一步輸出training後的model: train_data.model)

 

step 2: Predicting

>>svm-predict test_data train_data.model test_data.predict

(回車,你會看到predicting 的accuracy)

 

簡單吧?但是有兩個前提:

首先,train_data, test_data必須符合libsvm要求的格式。我稱這步爲step -2.

格式要求:[label] [index1]:[value1] [index2]:[value2] ...

其次,如果要達到更高的精確度,有時需要將train_data, test_data進行scale。我稱這步爲step -1.

這步要用到svm-scale。

 

再次,如果要達到更高的精確度,我們需要用cross-validation來確定kernel function的參數值。我稱這步爲step 0.

這步會用到grid.py. (所有python .py 文件都在解壓文件的tools文件夾中)

 

到這裏,基本步驟講完了。是不是還是有點小複雜?

其實,解壓包裏tools文件夾中有一個easy.py文件,它會自動完成從step -1 到 step 2的所有工作。也就是說,你只需要按libsvm的要求準備好相應格式的數據,剩下的全部交給easy.py就行了。

 

4. easy.py使用

前提,安裝好python 和 gnuplot.

將解壓後得到的文件夾下的整個windows目錄拷到一個新的目錄下,e.g. E:/

把你的train data, test data, tools文件夾中的所有.py文件,還有下載安裝python後的那個python.exe都拷到E:/windows下(這樣就不用配置環境變量了)

修改grid.py, easy.py文件,找到其中關於gnuplot路徑的那項(默認路徑爲gnuplot_exe=r"c:/tmp/gnuplot/bin/pgnuplot.exe"),根據你實際保存的路徑進行修改,save.

現在萬事具備了。

 

cmd->cd E:/windows

輸入

python easy.py train_data test_data

 

回車就可以了。

easy.py自動scaling data, cross validation(這時會自動運行gnuplot,一點一點畫圖選參數~~),training, predicting.....

幾秒鐘後,你會直接看到accuracy的值。

 

 

libsvm權威tutorial:

http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

另一個很詳細很好的tutorial:

http://ntu.csie.org/~piaip/svm/svm_tutorial.html

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章