日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

libsvm使用

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

SVM基礎:
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. 關于交叉驗證(CrossValidation,簡稱CV)
4. 關于GridSearch
5. 非平衡數據
6. 自定義核函數(轉自http://www.matlabsky.com/forum.php?mod=viewthread&tid=15296)
另:
一、SVM 怎樣能得到好的結果

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

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

    這時, test.txt中的數據已經變成[-1,1]之間的數據了. 但是, 這樣原來的數據就被覆蓋了, 為了讓規劃好的數據另存為其他的文件, 我們用一dos的重定向符>來另存為(假設為out.txt):
    svmscale test.txt > out.txt
    運行后, 我們就可以看到目錄下多了一個out.txt文件, 那就是規范后的數據. 假如, 我們想設定數據范圍[0,1], 并把規則保存為test.range文件:
    svmscale –l 0 –u 1 –s test.range test.txt > out.txt
    這時, 目錄下又多了一個test.range文件, 可以用記事本打開, 下次就可以用-r test.range來載入了.

  • 應用 RBF kernel

  • 用cross-validation和grid-search得到最優的c和g

  • 用得到的最優c和g訓練訓練數據

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

  • load('test.mat');%test.mat中的變量test是結構對象,test.X代表訓練數據(n*d,d為特征向量長度),test.Y(n*1)代表數據的類別 [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

    最終形成的文件格式為:
    [標簽] 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

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。