libsvm2.9數據格式

所有關於libsvm2.9的前期工作準備好以後,就必須考慮將自己的數據轉換爲libsvm對應的格式來做分類驗證的問題

 

 

訓練與測試數據文件的格式如下所示

<label> <index1>:<value1> <index2>:<value2>…

.

.

.

每行包含一個實例,並且以字符’/n’結束。對於分類來講,<label>是整型數據,表示類別(支持多分類)。對於迴歸來講,<label>是任意實數(浮點數),表示目標值。one-class SVM並不使用這個參數,所以使用什麼數值都可以。除非使用預計算好的內核(稍候章節介紹),否則<index>:<value>是描述屬性值的。<index>(索引)是從1開始的整型數據,而<value>(值)是實數(浮點型)。索引必須升序排列。在測試文件中的標籤只是用於計算精確度或錯誤率。如果它們是未知的,那麼只要將第一列賦任意數值

 

本包含有一個用於分類的示例數據文件,文件名是“heart_scale”。要驗證你的數據格式的正確性,請使用“tools/checkdata.py”工具(詳見文件“tools/README”)。

鍵入“svm-train heart_scale”,程序會讀讀入訓練數據並生成模型文件“heart_scale.model”。假設你有一個名爲“heart_scale.t”的測試集,那麼鍵入“svm-predict heart_scale.t heart_scale.model output”以測試預測精確度。文件“output”中含有預測的分類標籤。

本包中還有一些別的實用程序:

 

1.svm-scale(對數據進行歸一化):

        將輸入數據數值化的工具。

       用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename (缺省值: lower = -1,upper = 1,沒有對y進行縮放) 其中:

       -l:數據下限標記;lower:縮放後數據下限;

       -u:數據上限標記;upper:縮放後數據上限;

       -y:是否對目標值同時進行縮放;y_lower爲下限值,y_upper爲上限值;(迴歸需要對目標進行縮放,因此該參數可以設定爲 –y -1 1 )

        -s save_filename:表示將縮放的規則保存爲文件save_filename;

        -r restore_filename:表示將縮放規則文件restore_filename載入後按此縮放; f

        ilename:待縮放的數據文件(要求滿足前面所述的格式)。

 

     縮放規則文件可以用文本瀏覽器打開,看到其格式爲:

     y
     lower upper min max x
     lower upper
     index1 min1 max1
     index2 min2 max2
„„ 其中的lower 與upper 與使用時所設置的lower 與upper 含義相同;index 表 示特徵序號;min 轉換前該特徵的最小值;max 轉換前該特徵的最大值。

 

     數據集的縮放結果在此情況下通過DOS窗口輸出,當然也可以通過DOS的文件重定向符號“>”將結果另存爲指定的文件。

     例:原始文件AORG,用svm-scale歸一化:svm-scale AORG >AORG.scale

 

    該文件中的參數可用於最後面對目標值的反歸一化。反歸一化的公式爲:
    (Value-lower)*(max-min)/(upper - lower)+lower
    其中value爲歸一化後的值,其他參數與前面介紹的相同。
    建議將訓練數據集與測試數據集放在同一個文本文件中一起歸一化,然後再將歸一化結果分成訓練集和測試集。


 

2.svmtrain(訓練數據,生成模型):

用法: svmtrain [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 coef 0:設置核函數中的coef 0,默認值爲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是訓練結束後產生的模型文件,該參數如果不設置將採用默認的文件名,也可以設置成自己慣用的文件名。
本實驗中的參數-s取3,-t取2(默認)還需確定的參數是-c,-g,-p

另, 實驗中所需調整的重要參數是-c 和 –g,-c和-g的調整除了自己根據經驗試之外,還可以使用gridregression.py 對這兩個參數進行優化。(需要補充)
該優化過程需要用到Python(2.5),Gnuplot(4.2),gridregression.py(該文件需要修改路徑)。
然後在命令行下面運行:
python.exe gridregression.py -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -s 3 –t 2 -v 5 -svmtrain E:/libsvm/libsvm-2.86/windows/svm-train.exe -gnuplot E:/libsvm/libsvm-2.86/gnuplot/bin/pgnuplot.exe E:/libsvm/libsvm-2.86/windows/train.txt > gridregression_feature.parameter
以上三個路徑根據實際安裝情況進行修改。
-log2c是給出參數c的範圍和步長 -log2g是給出參數g的範圍和步長 -log2p是給出參數p的範圍和步長上面三個參數可以用默認範圍和步長 -s選擇SVM類型,也是隻能選3或者4 -t是選擇核函數 -v 10 將訓練數據分成10份做交叉驗證。默認爲5
爲了方便將gridregression.py是存放在python.exe安裝目錄下
trian.txt爲訓練數據,參數存放在gridregression_feature.parameter中,可以自己命名。

搜索結束後可以在gridregression_feature.parameter中最後一行看到最優參數。
其中,最後一行的第一個參數即爲-c,第二個爲-g,第三個爲-p,最後一個參數爲均方誤差。前三個參數可以直接用於模型的訓練。

然後,根據搜索得到的參數,重新訓練,得到模型。

 

3.svm-predict(測試):

用法:svmpredict [options] test_file model_file output_file options(操作參數): -b probability_estimates:是否需要進行概率估計預測,可選值爲0 或者1,默認值爲0。 model_file 是由svmtrain 產生的模型文件;
test_file 是要進行預測的數據文件;
output_file 是svmpredict 的輸出文件,表示預測的結果值。
輸出結果包括均方誤差(Mean squared error)和相關係數(Squared correlation coefficient)。

 

 

4.svm-toy:

        簡單的圖形界面工具,它可以展示支持向 量機怎樣在二維空間(即平面)上將數據分類。你可以在該窗口上面單擊以繪製數據點。使用“change”按鈕來選擇類別1,2或3(也就是說,最多支持三 類),按“load”按鈕可以從文件載入數據,按“save”按鈕可以將數據保存到文件,按“run”按鈕可以獲得一個SVM模型(根據繪製的點集或從文 件載入的數據),按“clear”按鈕可以清屏。

 

        在該窗口的底部文本框內,你可以輸入參 數,參數的句法和“svm-train”一樣。

 

        注意:“load”和“save”只考 慮數據分類而不考慮迴歸的情況。每個數據點擁有一個標籤(顏色,必須是1,2或3)和兩個屬性(橫座標和縱座標),取值區間[0,1]。

 

 

發佈了24 篇原創文章 · 獲贊 5 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章