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

歡迎訪問 生活随笔!

生活随笔

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

libsvm使用

發(fā)布時間:2025/4/16 98 豆豆
生活随笔 收集整理的這篇文章主要介紹了 libsvm使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

SVM基礎(chǔ):
http://www.chinakdd.com/article-W82k0g2822JE712.html
看了一部分,還沒看完。。
博文:
(1)http://blog.csdn.net/chl033/article/details/4645544
寫的淺顯易懂
(2)如何提升LibSVM分類效果
http://blog.csdn.net/xiahouzuoxin/article/details/9372805
1. ‘svm-scale’的使用
2. 實際使用LibSVM的步驟
3. 關(guān)于交叉驗證(CrossValidation,簡稱CV)
4. 關(guān)于GridSearch
5. 非平衡數(shù)據(jù)
6. 自定義核函數(shù)(轉(zhuǎn)自http://www.matlabsky.com/forum.php?mod=viewthread&tid=15296)
另:
一、SVM 怎樣能得到好的結(jié)果

  • 對數(shù)據(jù)做歸一化(simple scaling)
    參考:http://jacoxu.com/?p=118
    svmscale是用來對原始樣本進行縮放的, 范圍可以自己定, 一般是[0,1]或[-1,1]. 縮放的目的主要是
    1) 防止某個特征過大或過小, 從而在訓(xùn)練中起的作用不平衡;
    2) 為了計算速度. 因為在核計算中, 會用到內(nèi)積運算或exp運算, 不平衡的數(shù)據(jù)可能造成計算困難.
    用法: svmscale [-l lower] [-u upper]
    [-y y_lower y_upper]
    [-s save_filename]
    [-r restore_filename] filename
  • 其中, []中都是可選項:
    -l: 設(shè)定數(shù)據(jù)下限; lower: 設(shè)定的數(shù)據(jù)下限值, 缺省為-1
    -u: 設(shè)定數(shù)據(jù)上限; upper: 設(shè)定的數(shù)據(jù)上限值, 缺省為1
    -y: 是否對目標(biāo)值同時進行縮放; y_lower為下限值, y_upper為上限值;
    -s save_filename: 表示將縮放的規(guī)則保存為文件save_filename;
    -r restore_filename: 表示將按照已經(jīng)存在的規(guī)則文件restore_filename進行縮放;
    filename: 待縮放的數(shù)據(jù)文件, 文件格式按照libsvm格式.

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

    這時, test.txt中的數(shù)據(jù)已經(jīng)變成[-1,1]之間的數(shù)據(jù)了. 但是, 這樣原來的數(shù)據(jù)就被覆蓋了, 為了讓規(guī)劃好的數(shù)據(jù)另存為其他的文件, 我們用一dos的重定向符>來另存為(假設(shè)為out.txt):
    svmscale test.txt > out.txt
    運行后, 我們就可以看到目錄下多了一個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
    這時, 目錄下又多了一個test.range文件, 可以用記事本打開, 下次就可以用-r test.range來載入了.

  • 應(yīng)用 RBF kernel

  • 用cross-validation和grid-search得到最優(yōu)的c和g

  • 用得到的最優(yōu)c和g訓(xùn)練訓(xùn)練數(shù)據(jù)

  • 測試
    二、Windows下svm使用的文件格式形成代碼
    在matlab中調(diào)用svm時沒有那么多功能(我目前理解的是這樣哦~~),如交叉驗證和數(shù)據(jù)歸一化等。為了使用這些功能,可以使用libsvm的exe文件進行交叉驗證和訓(xùn)練等。這些文件能夠接收的訓(xùn)練數(shù)據(jù)是下面的形式。下面程序就是把matlab中的特征向量和標(biāo)簽轉(zhuǎn)換成需要的格式。

  • load('test.mat');%test.mat中的變量test是結(jié)構(gòu)對象,test.X代表訓(xùn)練數(shù)據(jù)(n*d,d為特征向量長度),test.Y(n*1)代表數(shù)據(jù)的類別 [size1,size2]=size(test.X); fid=fopen('test.txt','wt'); for i=1:size1fprintf(fid,'%g ',test.Y(i));for j=1:size2fprintf(fid,'%g:',j);if j==size2fprintf(fid,'%g\n',test.X(i,j));elsefprintf(fid,'%g ',test.X(i,j));endend end

    最終形成的文件格式為:
    [標(biāo)簽] 1:value 2:value 3:value……..
    1 1:0 2:0 3:0.123379 4:0.56402 5:1.25773 6:2.27725 7:3.36294 8:2.5937
    0 1:0 2:0 3:0 4:0.00410983 5:0.294078 6:1.3213 7:2.09252 8:3.55806

    總結(jié)

    以上是生活随笔為你收集整理的libsvm使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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