libsvm中tools(easy.py,subset.py,grid.py,checkdata.py)的使用
這幾天在用libsvm(2.8.6)中的一些工具,總結一下.
libsvm的一些工具還是非常有用的,1.可以調用subset.py將你的樣本集合按你所想要的比例進行抽樣出兩個子樣本集合.2.還可以調用grid.py做關于(C,gamma)的交叉驗證參數選擇,可以輕松的搜索到最好的參數對(C,gamma).3.還可以調用easy.ph一步到位完成svm的整個挖掘過程,最后得出交叉驗證精度,最有參數對和測試集上的測試精度.4.還可以調用checkdata進行檢查你的數據格式是否有錯誤.這些操作可以讓大伙省事很多.
libsvm(2.8.6)中主要有四個工具:easy.py,subset.py,grid.py,checkdata.py.
運行環境要求和設置:
需要準備兩個工具.
一個工具是:python編譯環境,這個到網上下一個來安裝就好了(注意要設置環境變量path),下載python.exe 2.5.1; 另一個工具就是gnuplot.exe,到網上下一個,我用的是版本4.2的,下載gnuplot.exe 安裝完上面的軟件還不能運行,還要修改easy.py,grid.py的設置.將他們對應的代碼" gnuplot_exe = r"c:/tmp/gnuplot/bin/pgnuplot.exe""都改為你的pgnuplot.exe所在的路徑,
比如我的文件在當前目錄的上一級目錄,就是和tools文件夾在同一級目錄,那么我的設置應該為" gnuplot_exe = r"../gnuplot/bin/pgnuplot.exe"".
這樣設置就完成了,我們只需要到控制臺下運行上面相應的四個程序即可.
注意:下面的python命令中,我們默認所有需要處理的樣本數據集都是放在在tools目錄下,如果數據文件不在tools目錄下則我們需要用絕對路徑指定數據的位置.
下面分別介紹調用格式:
從其文檔可以發現其功能分別為:
(1) easy.py:只要簡單輸入,就可以完成svm挖掘的所有步驟,即:
1. Conduct simple scaling on the data
2.Consider the RBF kernel K(x; y)
3.Use cross-validation to nd the best parameter C and
4.Use the best parameter C and to train the whole training set
5.Test
對于初學者而言這個文件無非是他們的救命稻草,可以簡單看看他的語法:
在控制臺下走到easy.py所在的目錄下:
$ python easy.py train.3 test.3
Scaling training data...歸一化數據
Cross validation...在訓練集上做交叉驗證
Best c=128.0, g=0.125 CV rate=88.9186 (通過網格搜索法對每個參數對做交叉驗證,選擇交叉驗證精度最高所對應的參數.)
Training...( 將上面得到的參數對在訓練集合上做模型訓練)
Output model: crttrain.model (保存模型到文件)
Scaling testing data... (歸一化數據)
Testing...(用訓練得出的模型對測試集進行測試)
Accuracy = 87.8049% (36/41) (classification)(測試的精度)
Output prediction: crttest.predict (輸出預測結果)
(在交叉驗證過程中,會有一個圖形界面顯示參數選擇的情況,這就是gnuplot.exe的作用了)
(2).grid.py:用于做交叉驗證,選擇最好的參數對.
用法:
在控制臺下走到grid.py所在的目錄下:
$python grid.py crttrain
[local] 5 -7 86.9186 (best c=32.0, g=0.0078125, rate=86.9186)
[local] -1 -7 85.1744 (best c=32.0, g=0.0078125, rate=86.9186)
[local] 5 -1 77.0349 (best c=32.0, g=0.0078125, rate=86.9186)
.......
[local] 13 -15 85.1744 (best c=32.0, g=0.0078125, rate=86.9186)
[local] 13 3 55.5233 (best c=32.0, g=0.0078125, rate=86.9186)
[local] 13 -9 83.1395 (best c=32.0, g=0.0078125, rate=86.9186)
[local] 13 -3 79.6512 (best c=32.0, g=0.0078125, rate=86.9186)
32.0 0.0078125 86.9186 (c=32,gamma=0.0078125 交叉驗證精度)
(3) subset.py 用于按個數分割樣本集成訓練集和測試集.
用法:
在控制臺下走到subset.py所在的目錄下:
$python subset.py crt 100 crttrain crttest
參數說明:
crt:樣本集合;
100:訓練集樣本個數;
crttrain:存儲100個訓練樣本;
crttest:存儲剩下的樣本集做為測試集;
如果成功沒有輸出信息,反之則有錯誤提示.
(4) checkdata.py 用于檢測樣本集存儲格式是否正確
在控制臺下走到subset.py所在的目錄下:
$python checkdata.py crt
No error. (表示沒有錯)
轉貼:原鏈接已失效
總結
以上是生活随笔為你收集整理的libsvm中tools(easy.py,subset.py,grid.py,checkdata.py)的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svm通俗易懂的理解
- 下一篇: 一些自己关注的人工智能杂志(注意:这里所