libsvm中有進行參數調優的工具grid.py和easy.py可以使用,這些工具可以幫助我們選擇更好的參數,減少自己參數選優帶來的煩擾。
所需工具:libsvm、gnuplot
本機環境:Windows7(64 bit) ,Python3.5
1、相關程序的下載和安裝:
1.1、下載libsvm,我用的是libsvm-3.18.zip,下載后直接解壓到任意位置,我解壓到C:\libsvm-3.18下。
1.2、下載python,我下的是python-3.5.msi,雙擊該文件安裝到默認位置,我安裝到C:\Users\Administrator\AppData\Local\Programs\Python\Python35下。將該路徑添加到系統環境變量中。
1.3、下載gunplot,我下的是gp460-win32-setup.exe,雙擊該文件安裝到默認位置,我安裝到C:\Program Files\gnuplot下。
2、grid.py使用
文件grid.py是對C-SVC的參數c和γ(gamma)做優選的,原理也是網絡遍歷,假設我們要對目錄C:\libsvm-3.18\tool下的樣本文件heart_scale做優選,其具體用法為:
第一步:打開C:\libsvm-3.18下的tools文件夾,找到grid.py文件。用python打開(不能雙擊,而要右鍵選擇“Edit with IDLE” 或者先打開IDLE,再添加進去),修改self.svmtrain_pathname和self.gnuplot_pathname的路徑。

(修改文件時要注意,要修改else下的self.svmtrain_pathname和self.gnuplot_pathname,而不是if not is win32)
第二步:運行cmd,進入dos環境,定位到C:\libsvm-3.18\tools文件夾,這里是放置grid.py的地方。
第三步:輸入以下命令:
python grid.py heart_scale
你就會看到dos窗口飛速亂串的[local]數據,以及一個gnuplot的動態繪圖窗口。大約過10秒鍾,就會停止。Dos窗口中的[local]數據是局部最優值,這個不用管,直接看最后一行:
2048.0 0.0001220703125 84.0741
其意義表示:C=2048.0;γ=0.0001220703125;交叉驗證精度CV Rate=84.0741%,這就是最優結果。
第四步:打開目錄C:\libsvm-3.18\tools,我們可以看到新生成了兩個文件:heart_scale.out和heart_scale.png,第一個文件就是搜索過程中的[local]和最優數據,第二個文件就是gnuplot圖像。
現在,grid.py已經運行完了,你可以把最優參數輸入到svm-train中進行訓練了。
3、easy.py使用方法
文件easy.py對樣本文件做了“一條龍服務”,從參數優選,到文件預測。因此,其對grid.py、svm-train、svm-scale和svm-predict都進行了調用(當然還有必須的python和gnuplot)。因此,運行easy.py需要保證這些文件的路徑都要正確。還需要樣本文件和預測文件,這里樣本文件還是用heart_scale,預測文件我們賦值一份然后改名heart_test,下面說說使用方法:
第一步:打開easy.py,修改#example for windows下的幾個路徑:

第二步:運行cmd,進行dos環境,定位到防止easy.py的目錄C:\libsvm-3.18\tools
第三步:輸入命令:
python easy.py heart_scale heart_test
就會看到一個gnuplot的動態繪圖窗口。大約20s以后停止,dos窗口顯示為:
Scaling training data… Cross validation… Best c=2048.0, g=0.0001220703125 CVrate=84.0741 Training… Output model: heart_scale.model Scaling testing data… Testing… Accuracy = 85.1852% (230/270) (classification) Output prediction: heart_test.predict
這就是最終預測結果,可以看到第三行就是調用grid.py的結果。在C:\libsvm-3.18\tools下你會看到又多了7個文件,都是以前我們碰到的過程文件,都可以用記事本打開。
