初步體驗libsvm用法1(官方自帶工具)


      在機器學習和模式識別領域,svm理論使用得很廣泛,其理論基礎是統計學習,但是如果我們的研究方向不是svm理論,我們只是利用已有的svm工具來對我們的任務進行分類和回歸,那么libsvm是一個不錯的選擇。

      那么libsvm到底怎么使用呢?研究了一下,發現使用起來不是很復雜,這一小結就說說到底怎么簡單的體會libsvm吧。

 

一、 首先准備幾個工具:

      Libsvm下載 http://www.csie.ntu.edu.tw/~cjlin/libsvm/

      Gnuplot下載:http://www.gnuplot.info/

  Python下載:  http://www.python.org/getit/

  這里我下的libsvm版本為3.1.2,gnuplot版本為4.6.0,python版本為2.7.3。

  其中libsvm的作用就不用多介紹了,gunplot是圖像繪畫工具,可以將數據可視化,python是一種程序編程語言,很方便,所以libsvm和她走得比較近。

  我將libsvm解壓(即相當於安裝)在C:\Program Files\libsvm-3.12下

  Gnuplot安裝在C:\Program Files\gnuplot下

  Python安裝在C:\Program Files\Python27下。

 

二、准備環境

     我在桌面建立了一個svm_test文件夾,將常用的幾個二進制文件拷貝到該目錄下,后面要用的。這些二進制文件包括svm-predict.exe,svm-scale.exe,svm-toy.exe,svm-train.exe,python.exe以及配置文件easy.py和grid.py。這些文件就在剛安裝的幾個軟件目錄中去找,這里就不列舉了。如下所示:

  

  當然並不是每一次分類和回歸這些都要用到這些文件,可以自己選擇,此處只是做個通用的介紹。

  用文本文件打開grid.py,改變一下配置環境,在else語句后面,你可以根據自己的環境改一下。如下:

  

  同理,easy.py也改變一下,我的改后為:

  

 

、准備訓練的數據:

  為了熟悉libsvm環境,這里我用libsvm自帶svm-toy.exe來產生數據,打開svm-toy.exe顯示如下:  

       

  注意到狀態行的幾個按鈕,你自己摸索下就知道是什么用了,無需介紹。下面我產生數據如下所示:

  

  點擊下面的run按鈕,結果顯示如下:

  

  點擊save將數據保存,我保存為before_train。

 

四、准備訓練參數

  因為svm訓練需要手動調整參數,一般采用默認的情況即可,這里還是為了體驗libsvm,可以用libsvm自帶的grid.py來自動暴力搜索最好的參數c和g,c表示懲罰系數,g表示  gamma系數。所以我們在命令行終端輸入:

  

  這是會出現如下的界面:

  

  等運行完畢后在命令行終端會顯示128.0 0.5 91.4141

  前面那2個參數就是c和g,第三個不用管,也就是說如果我們c用128,g用0.5來訓練svm數據效果是最好的。

  但是在此過程中如果出現assertionerror:svm-train executable not found的錯誤提示:

  

   這原因是前面的grid.py沒有更改與自己安裝文件相對應的路徑。其實我改的那些路徑也未必是安裝路徑,因為我已經把需要用的幾個exe文件復制出來了,這樣很方便,換別人的電腦這些配置不用改變太多。

五、訓練數據:

  在命令行輸入svm-train .exe –c 128 –g 0.5 before_train after_train.model

  

  運行結果如下:

  

  並且在相應的svm_test中輸出了一個文件after_train.model。

 

六、預測數據。

  其實我們開始就預測了下數據,只是我們用的是默認的模型,參數是-t 2 -c 100,為了對比兩者的效果,我們先采用默認參數來訓練:

在命令行輸入:svm-train.exe before_train default_predict.model

  

  然后用默認參數訓練出的模型進行預測:

  在命令行輸入:svm-predict.exe before_train default_predict.model after_train_default

  

  其結果顯示如下:

  

  由此可見其准確率只有85.8586%.

   下面我們采用用grid.py訓練出的最佳參數來預測下模型,其過程和結果如下所示:

  

  由此可見准確率提高到了91.6667%(但要注意這不一定很好,why?因為這是訓練數據,有可能過擬合。)

用精確模型預測后的數據可視化顯示如下:

  

   肉眼感覺不出太大的區別,不過數據擺在那里,說明grid.py還是很牛叉的!

   好吧,libsvm使用的簡單體驗過程就先到這里。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM