libsvm下的windows版本中的工具的使用


 

下載的libsvm包里面已經為我們編譯好了(windows)。進入libsvm\windows,可以看到這幾個exe文件:

a.svm-toy.exe:圖形界面,可以自己畫點,產生數據等。

b.svm-scale.exe:對特征值進行縮放。

c.svm-train.exe:接收特定格式的輸入,產生一個model文件。

d.svm-predict.exe:依照已經train好的model,輸入新的數據,並輸出預測新數據的類別。

 

svm-toy.exe

可以自己生成數據,雙擊svm-toy,點擊change可以在畫布上畫點:

點擊run,其實就是train的過程。它是個toy(玩具),是為了人們更形象地了解svm,其具體玩法就不做介紹了。

 

svm-scale.exe

因為原始數據可能范圍過大或過小,svmscale可以先將數據重新scale(縮放)到適當范圍使訓練與預測速度更快。

使用方法:

svm-scale.exe [-l lower] [-u upper] [-y y_lower y_upper] [-s save_name] [-r store_name] filename

其中:


 

-l   lower : x scaling lower limit (default -1)       特征值縮放下限,默認為-1

-u  upper : x scaling upper limit (default +1)        特征值縮放上限,默認為+1

-y  y_lower y_upper : y scaling limits (default: no y scaling)          是否對目標值進行縮放及縮放的上下限,默認不縮放  注意:(回歸需要對目標進行縮放,因此該參數可以設定為 -y -1 1)

-s save_filename : save scaling parameters to save_filename    表示將縮放的規則保存為文件save_filename

-r restore_filename : restore scaling parameters from restore_filename  表示將縮放規則文件restore_filename載入后按此規則縮放

 

若要了解更具體的縮放規則,請參考:http://blog.csdn.net/dxy_1110/article/details/43851955

svm-train.exe

用於訓練數據,生成模型;

使用方法:

svm-train.exe [options] training_set_file [model_file] 

其中:

options(操作參數):可用的選項即表示的含義如下所示:


 

-s svm類型:設置SVM類型,默認值為0,可選類型有(對於回歸只能選3或4):

0 – C-SVC

1 – n-SVC

2 -- one-class-SVM

3 – e-SVR

4 – n-SVR

-t 核函數類型:設置核函數類型,默認值為2,可選類型有:

0 --  線性核: u'*v

1 --  多項式核:  (g*u'*v+ coef 0)deg ree

2 -- RBF  核: e( u v 2) g –

3 -- sigmoid  核: tanh(g*u'*v+ coef 0)

-d degree:核函數中的degree設置,默認值為3;

-g g:設置核函數中的g,默認值為1/k;

-r coef0:設置核函數中的coef0,默認值為0;

-c cost:設置 C- SVC 、 e - SVR 、 n - SVR 中的懲罰系數 C ,默認值為 1 ;

-n n:設置n - SVC 、 one-class-SVM  與 n - SVR  中參數 n  ,默認值 0.5 ;

-p e:設置n - SVR 的損失函數中的 e  ,默認值為 0.1 ;

-m cachesize:設置 cache 內存大小,以 MB 為單位,默認值為 40 ;

-e e:設置終止准則中的可容忍偏差,默認值為0.001;

-h shrinking:是否使用啟發式,可選值為0或1,默認值為1;

-b 概率估計:是否計算SVC或SVR的概率估計,可選值0或1,默認0;

-wi weight:對各類樣本的懲罰系數C加權,默認值為1;

-v n:n折交叉驗證模式。


 

其中-g選項中的k是指輸入數據中的屬性數。操作參數-v隨機地將數據剖分為n部分並計算交叉檢驗准確度和均方根誤差。以上這些參數設置可以按照SVM的類型和核函數所支持的參數進行任意組合,如果設置的參數在函數或SVM類型中沒有也不會產生影響,程序不會接收該參數,如果應有的參數設置不正確,參數將采用默認值。

training_set_file:是要進行訓練的數據集;

model_file:是訓練結束后產生的模型文件,該參數如果不設置將采用默認的文件名,也可以設置成自己慣用的文件名。

舉個例子如下:

C:\libsvm-3.18\windows>svm-train.exe heart_scale

輸出:

簡單對屏幕回顯信息進行說明:


#iter為迭代次數,

nu 與前面的操作參數-n nu 相同,

obj為SVM文件轉換為的二次規划求解得到的最小值,

rho 為判決函數的常數項b

nSV 為支持向量個數,

nBSV為邊界上的支持向量個數,

Total nSV為支持向量總個數(對於兩類來說,因為只有一個分類模型 Total nSV = nSV ,但是對於多類,這個是各個分類模型的 nSV 之和)。


 

訓練后的模型保存為文件*.model,用記事本打開其內容如下:


svm_type c_svc 訓練所采用的svm類型,此處為C- SVC

kernel_type rbf %訓練采用的核函數類型,此處為RBF

gamma 0.0769231 %設置核函數中的g ,默認值為1/ k

nr_class 2 %分類時的類別數,此處為兩分類問題

total_sv 132 %總共的支持向量個數

rho 0.424462 %決策函數中的常數項b

label 1 -1%類別標簽

nr_sv 64 68 %各類別標簽對應的支持向量個數

SV %以下為支持向量

1 1:0.166667 2:1 3:-0.333333 4:-0.433962 5:-0.383562 6:-1 7:-1 8:0.0687023 9:-1 10:-0.903226 11:-1 12:-1 13:1

0.5104832128985164 1:0.125 2:1 3:0.333333 4:-0.320755 5:-0.406393 6:1 7:1 8:0.0839695 9:1 10:-0.806452 12:-0.333333 13:0.5

1 1:0.333333 2:1 3:-1 4:-0.245283 5:-0.506849 6:-1 7:-1 8:0.129771 9:-1 10:-0.16129 12:0.333333 13:-1

1 1:0.208333 2:1 3:0.333333 4:-0.660377 5:-0.525114 6:-1 7:1 8:0.435115 9:-1 10:-0.193548 12:-0.333333 13:1


 

補充:采用交叉驗證選擇最佳參數C與g

通常而言,比較重要的參數是 gamma (-g) 跟 cost (-c) 。而 cross validation (-v)的參數常用5。那么如何去選取最優的參數c和g呢?上篇博文提到可以使用libsvm子目錄下面的grid.py。

grid.py是一種用於RBF核函數的C-SVM分類的參數選擇程序。用戶只需給定參數的一個范圍,grid.py采用交叉驗證的方法計算每種參數組合的准確度來找到最好的參數。

Usage: grid.py [-log2c begin,end,step] [-log2g begin,end,step] [-v fold]

       [-svmtrain pathname] [-gnuplot pathname] [-out pathname] [-png pathname]

       [additional parameters for svm-train] dataset

The program conducts v-fold cross validation using parameter C (and gamma)= 2^begin, 2^(begin+step), ..., 2^end.

示例:

python grid.py -log2c -10,10,1 -log2g 10,-10,-1 trainset.txt

這是給參數C和g設定了一個范圍,且給定了變化步長,程序會在給定范圍內尋找最優參數C和g

當然也可以直接這樣:

python grid.py trainset.txt

讓程序自動獲取最佳的C和g。常會出現的情況是:對不同的C和g,交叉驗證的精度(Accuracy)常會相同。這會導致當不指定范圍時,得到的C過大或過小,過大時,表示對錯誤例懲罰程度越大,可能到導致模型過擬合,使得在對測試集進行測試時,准確率較低。C過小時,容易欠擬合。

svm-predict.exe

用來測試訓練結果的准確率。

使用方法:

svm-predict.exe[options] test_file model_file output_file

options(操作參數):


 

-b probability_estimates:是否需要進行概率估計預測,可選值為0或1,默認值為0。

test_file:是要進行預測的數據文件;

model_file:是由svm-train.exe產生的模型文件;

output_file:是svmpredict的輸出文件,表示預測的結果值。

(注:輸出結果包括均方誤差(Mean squared error)和相關系數(Squared corralation coefficient)。)

例如:

./svm-predict heart_scale heart_scale.model heart_scale.out

這里顯示的是結果:

Accuracy = 86.6667% (234/270) (classification)

 

以上。

 

 

 

 

 


免責聲明!

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



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