日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

LibSVM学习(三)——LibSVM使用规范

發(fā)布時(shí)間:2025/3/21 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LibSVM学习(三)——LibSVM使用规范 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?? 其實(shí),這部分寫也是多余,google一下“l(fā)ibsvm使用”,就會(huì)N多的資源,但是,為了讓你少費(fèi)點(diǎn)心,在這里就簡(jiǎn)單的介紹一下,有不清楚的只有動(dòng)動(dòng)你的mouse了。需要說明的是,2.89版本以前,都是svmscale、svmtrain和svmpredict,最新的是svm-scale、svm-train和svm-predict,要是用不習(xí)慣,只需要把那四個(gè)exe文件名去掉中間的短橫線,改成svmscale、svmtrain和svmpredict就可以了,我們還是按原來函數(shù)名的講。

?

1. libSVM的數(shù)據(jù)格式

Label 1:value 2:value ….

?

Label:是類別的標(biāo)識(shí),比如上節(jié)train.model中提到的1 -1,你可以自己隨意定,比如-10,0,15。當(dāng)然,如果是回歸,這是目標(biāo)值,就要實(shí)事求是了。

Value:就是要訓(xùn)練的數(shù)據(jù),從分類的角度來說就是特征值,數(shù)據(jù)之間用空格隔開

?

比如: -15 1:0.708 2:1056 3:-0.3333

?

需要注意的是,如果特征值為0,特征冒號(hào)前面的(姑且稱做序號(hào))可以不連續(xù)。如:

?????? -15 1:0.708 3:-0.3333

表明第2個(gè)特征值為0,從編程的角度來說,這樣做可以減少內(nèi)存的使用,并提高做矩陣內(nèi)積時(shí)的運(yùn)算速度。我們平時(shí)在matlab中產(chǎn)生的數(shù)據(jù)都是沒有序號(hào)的常規(guī)矩陣,所以為了方便最好編一個(gè)程序進(jìn)行轉(zhuǎn)化。

?

?

?

2. svmscale的用法

?

??? svmscale是用來對(duì)原始樣本進(jìn)行縮放的,范圍可以自己定,一般是[0,1]或[-1,1]。縮放的目的主要是

1)防止某個(gè)特征過大或過小,從而在訓(xùn)練中起的作用不平衡;

2)為了計(jì)算速度。因?yàn)樵诤擞?jì)算中,會(huì)用到內(nèi)積運(yùn)算或exp運(yùn)算,不平衡的數(shù)據(jù)可能造成計(jì)算困難。

?

用法:svmscale [-l lower] [-u upper]

???????????????????????? [-y y_lower y_upper]

???????????????????????? [-s save_filename]

???????????????????????? [-r restore_filename] filename

?

?


其中,[]中都是可選項(xiàng):

???????? -l:設(shè)定數(shù)據(jù)下限;lower:設(shè)定的數(shù)據(jù)下限值,缺省為-1

???????? -u:設(shè)定數(shù)據(jù)上限;upper:設(shè)定的數(shù)據(jù)上限值,缺省為 1

???????? -y:是否對(duì)目標(biāo)值同時(shí)進(jìn)行縮放;y_lower為下限值,y_upper為上限值;

???????? -s save_filename:表示將縮放的規(guī)則保存為文件save_filename;

???????? -r restore_filename:表示將按照已經(jīng)存在的規(guī)則文件restore_filename進(jìn)行縮放;

???????? filename:待縮放的數(shù)據(jù)文件,文件格式按照libsvm格式。


?


?


默認(rèn)情況下,只需要輸入要縮放的文件名就可以了:比如(已經(jīng)存在的文件為test.txt)

????????

???????????????????????? svmscale test.txt

?

??? 這時(shí),test.txt中的數(shù)據(jù)已經(jīng)變成[-1,1]之間的數(shù)據(jù)了。但是,這樣原來的數(shù)據(jù)就被覆蓋了,為了讓規(guī)劃好的數(shù)據(jù)另存為其他的文件,我們用一個(gè)dos的重定向符 > 來另存為(假設(shè)為out.txt):

????????

??????????????????????? svmscale test.txt > out.txt

?

?? 運(yùn)行后,我們就可以看到目錄下多了一個(gè)out.txt文件,那就是規(guī)范后的數(shù)據(jù)。假如,我們想設(shè)定數(shù)據(jù)范圍[0,1],并把規(guī)則保存為test.range文件:


???????????????????????? svmscale –l 0 –u 1 –s test.range test.txt > out.txt

?

這時(shí),目錄下又多了一個(gè)test.range文件,可以用記事本打開,下次就可以用-r test.range來載入了。

?


?


3. svmtrain的用法

?

????? svmtrain我們?cè)谇懊嬉呀?jīng)接觸過,他主要實(shí)現(xiàn)對(duì)訓(xùn)練數(shù)據(jù)集的訓(xùn)練,并可以獲得SVM模型。

?

??????? 用法: svmtrain [options] training_set_file [model_file]

?

其中,options為操作參數(shù),可用的選項(xiàng)即表示的涵義如下所示:

-s 設(shè)置svm類型:

???????? 0 – C-SVC

???????? 1 – v-SVC

???????? 2 – one-class-SVM

???????? 3 – ε-SVR

???????? 4 – n - SVR


-t 設(shè)置核函數(shù)類型,默認(rèn)值為2

???????? 0 -- 線性核:u'*v

???????? 1 -- 多項(xiàng)式核: (g*u'*v+ coef 0)degree

???????? 2 -- RBF 核:exp(-γ*||u-v||2)

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


-d degree: 設(shè)置多項(xiàng)式核中degree的值,默認(rèn)為3


-gγ: 設(shè)置核函數(shù)中γ的值,默認(rèn)為1/k,k為特征(或者說是屬性)數(shù);

???????? -r coef 0:設(shè)置核函數(shù)中的coef 0,默認(rèn)值為0;

???????? -c cost:設(shè)置C-SVC、ε-SVR、n - SVR中從懲罰系數(shù)C,默認(rèn)值為1;

???????? -n v :設(shè)置v-SVC、one-class-SVM 與n - SVR 中參數(shù)n ,默認(rèn)值0.5;

???????? -p ε :設(shè)置v-SVR的損失函數(shù)中的e ,默認(rèn)值為0.1;

???????? -m cachesize:設(shè)置cache內(nèi)存大小,以MB為單位,默認(rèn)值為40;

???????? -e ε :設(shè)置終止準(zhǔn)則中的可容忍偏差,默認(rèn)值為0.001;

???????? -h shrinking:是否使用啟發(fā)式,可選值為0 或1,默認(rèn)值為1;

???????? -b 概率估計(jì):是否計(jì)算SVC或SVR的概率估計(jì),可選值0 或1,默認(rèn)0;

???????? -wi weight:對(duì)各類樣本的懲罰系數(shù)C加權(quán),默認(rèn)值為1;

???????? -v n:n折交叉驗(yàn)證模式;

???????? model_file:可選項(xiàng),為要保存的結(jié)果文件,稱為模型文件,以便在預(yù)測(cè)時(shí)使用。

????

??? 默認(rèn)情況下,只需要給函數(shù)提供一個(gè)樣本文件名就可以了,但為了能保存結(jié)果,還是要提供一個(gè)結(jié)果文件名,比如:test.model,則命令為:


???????????????????????????????????????? svmtrain test.txt test.model

?


結(jié)果說明見LibSVM學(xué)習(xí)(二)。


?


4. svmpredict 的用法

?

??? svmpredict 是根據(jù)訓(xùn)練獲得的模型,對(duì)數(shù)據(jù)集合進(jìn)行預(yù)測(cè)。

?

?? 用法:svmpredict [options] test_file model_file output_file

?

?? 其中,options為操作參數(shù),可用的選項(xiàng)即表示的涵義如下所示:

-b probability_estimates——是否需要進(jìn)行概率估計(jì)預(yù)測(cè),可選值為0 或者1,默認(rèn)值為0。

?


model_file ——是由svmtrain 產(chǎn)生的模型文件;

test_file—— 是要進(jìn)行預(yù)測(cè)的數(shù)據(jù)文件,格式也要符合libsvm格式,即使不知道label的值,也要任意填一個(gè),svmpredict會(huì)在output_file中給出正確的label結(jié)果,如果知道label的值,就會(huì)輸出正確率;

output_file ——是svmpredict 的輸出文件,表示預(yù)測(cè)的結(jié)果值。


?

?? 至此,主要的幾個(gè)接口已經(jīng)講完了,滿足一般的應(yīng)用不成問題。對(duì)于要做研究的,還需要深入到svm.cpp文件內(nèi)部,看看都做了什么。


本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/flydreamGG/archive/2009/08/21/4468995.aspx

總結(jié)

以上是生活随笔為你收集整理的LibSVM学习(三)——LibSVM使用规范的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。