雷火电竞官网-中国知名电竞赛事平台

當下軟件園 / 匯聚當下最新最酷的軟件下載站!
當下軟件園

您的位置: 首頁 > 應用軟件 > 雜類工具 > libsvm工具箱 V3.1.7 免費版

  libsvm工具箱是一款專門為你提供做支持向量機的時候需要的工具箱,是一個簡單,容易使用,快速有效的SVM模式識別和回歸的軟件包,支持向量機源碼。

libsvm工具箱

【使用方法】

  1.首先從主頁上下載libsvm、Python2.5.2和gnuplot 三個軟件。
  2.準備好數據,首先要把數據轉換成Libsvm軟件包要求的數據格式為:
  label index1:value1 index2:value2 ...
  其中對于分類來說label為類標識,指定數據的種類,對于回歸來說label為目標值。(我主要要用到回歸)
  Index是從1開始的自然數,value是每一維的特征值。
  該過程可以自己使用excel或者編寫程序來完成,也可以使用網絡上的FormatDataLibsvm.xls來完成。

  FormatDataLibsvm.xls使用說明:
  先將數據按照下列格式存放(注意label放最后面):
  value1 value2 ?? label
  value1 value2 ?? label
  ??
  然后將以上數據粘貼到FormatDataLibsvm.xls中的最左上角單元格,接著工具->宏執行行FormatDataToLibsvm宏。就可以得到libsvm要求的數據格式。將該數據存放到文本文件中進行下一步的處理。
  3.對數據進行歸一化。
  該過程要用到libsvm軟件包中的svm-scale.exe
  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載入后按此縮放; filename:待縮放的數據文件(要求滿足前面所述的格式)。
  縮放規則文件可以用文本瀏覽器打開,看到其格式為:
  y
  lower upper min max x
  lower upper
  index1 min1 max1
  index2 min2 max2
  ?? 其中的lower 與upper 與使用時所設置的lower 與upper 含義相同;index 表 示特征序號;min 轉換前該特征的最小值;max 轉換前該特征的最大值。數據集的縮放結果在此情況下通過DOS窗口輸出,當然也可以通過DOS的文件重定向符號“>”將結果另存為指定的文件。該文 件中的參數可用于最后面對目標值的反歸一化。反歸一化的公式為:
 ?。╒alue-lower)*(max-min)/(upper - lower)+lower
  其中value為歸一化后的值,其他參數與前面介紹的相同。
  建議將訓練數據集與測試數據集放在同一個文本文件中一起歸一化,然后再將歸一化結果分成訓練集和測試集。
  4.訓練數據,生成模型。
  用法: 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,最后一個參數為均方誤差。前三個參數可以直接用于模型的訓練。
  然后,根據搜索得到的參數,重新訓練,得到模型。
  5.測試
  用法: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)。
  用LIBSVM做回歸和預測的步驟(請指點)
  用LIBSVM做回歸和預測的步驟(請指點)
  首先說明,我學習SVM才幾天,對基本理論還不了解,只是想利用這一工具做自己想做的事情。摸索著做了幾個實驗,試著把過程寫下來,請大家指點。
  <1> 下載Libsvm、Python和Gnuplot。我用的版本分別是:Libsvm(2.8.1),Python(2.4),Gnuplot(3.7.3)。注意:Gnuplot一定要用3.7.3版,3.7.1版的有bug.
  <2> 修改訓練和測試數據的格式(可以自己用perl編個小程序):
  目標值 第一維特征編號:第一維特征值 第二維特征編號:第二維特征值 …
  …
  例如:
  2.3 1:5.6 2:3.2
  表示訓練用的特征有兩維,第一維是5.6,第二維是3.2,目標值是2.3
  注意:訓練和測試數據的格式必須相同,都如上所示。測試數據中的目標值是為了計算誤差用
  <3> 分別使用Libsvm中的Windows版本的工具svmscale.exe進行訓練和測試數據的歸一化,svmtrain.exe進行模型訓練,svmpredict.exe進行預測
 ?。?)svmscale.exe的用法:svmscale.exe feature.txt feature.scaled
  默認的歸一化范圍是[-1,1],可以用參數-l和-u分別調整上界和下屆,feature.txt是輸入特征文件名
  輸出的歸一化特征名為feature.scaled
 ?。?)svmtrtrain.exe訓練模型
  我習慣寫個批處理小程序,處理起來比較方便。例如svm_train.bat中訓練語句為:
  svmtrain.exe -s 3 -p 0.0001 -t 2 -g 32 -c 0.53125 -n 0.99 feature.scaled
  訓練得到的模型為feature.scaled.model
  具體的參數含義可以參考幫助文檔。這里-s是選擇SVM的類型。對于回歸來說,只能選3或者 4,3表示epsilon-support vector regression, 4表示nu-support vector regression。-t是選擇核函數,通常選用RBF核函數,原因在“A Practical Guide support vector classification”中已經簡單介紹過了。-p盡量選個比較小的數字。需要仔細調整的重要參數是-c和-g。除非用 gridregression.py來搜索最優參數,否則只能自己慢慢試了。
  用gridregression.py搜索最優參數的方法如下:
  python.exe gridregression.py -svmtrain H:\SVM\libsvm-2.81\windows\svmtrain.exe -gnuplot C:\gp373w32\pgnuplot.exe -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 H:\SVM\libsvm-2.81\windows\feature.scaled > gridregression_feature.parameter
  注意:-svmtrain是給出svmtrain.exe所在路徑,一定要是完整的全路徑
  -gnuplot是給出pgnuplot.exe所在路徑。這里要用pgnuplot.exe這種命令行形式的,不要用wgnupl32.exe,這個是圖形界面的。
  -log2c是給出參數c的范圍和步長
  -log2g是給出參數g的范圍和步長
  -log2p是給出參數p的范圍和步長
  上面三個參數可以用默認范圍和步長
  -s選擇SVM類型,也是只能選3或者4
  -t是選擇核函數
  -v 10 將訓練數據分成10份做交叉驗證。默認為5
  最后給出歸一化后訓練數據的全路徑
  搜索最優參數的過程寫入文件gridregression_feature.parameter(注意別少了這個>符號?。?br />   根據搜索到的最優參數修改feature.scaled.model中的參數
 ?。?)用svmpredict.exe進行預測
  svmpredict.exe feature_test.scaled feature.scaled.model feature_test.predicted
  其中feature_test.scaled是歸一化后的測試特征文件名,feature.scaled.model是訓練好的模型,SVM預測的值在feature_test.predicted中
  核函數方法簡介
 ?。?)核函數發展歷史
  早在1964年Aizermann等在勢函數方法的研究中就將該技術引入到機器學習領域,但是直到1992年Vapnik等利用該技術成功地將線性 SVMs推廣到非線性SVMs時其潛力才得以充分挖掘。而核函數的理論則更為古老,Mercer定理可以追溯到1909年,再生核希爾伯特空間 (ReproducingKernel Hilbert Space, RKHS)研究是在20世紀40年代開始的。
 ?。?)核函數方法原理
  根據模式識別理論,低維空間線性不可分的模式通過非線性映射到高維特征空間則可能實現線性可分,但是如果直接采用這種技術在高維空間進行分類或回歸,則存 在確定非線性映射函數的形式和參數、特征空間維數等問題,而最大的障礙則是在高維特征空間運算時存在的“維數災難”。采用核函數技術可以有效地解決這樣問 題。
  設x,z∈X,X屬于R(n)空間,非線性函數Φ實現輸入間X到特征空間F的映射,其中F屬于R(m),n<<m。根據核函數技術有:
  K(x,z) =<Φ(x),Φ(z) > (1)
  其中:<, >為內積,K(x,z)為核函數。從式(1)可以看出,核函數將m維高維空間的內積運算轉化為n維低維輸入空間的核函數計算,從而巧妙地解決了在高 維特征空間中計算的“維數災難”等問題,從而為在高維特征空間解決復雜的分類或回歸問題奠定了理論基礎。
 ?。?)核函數特點
  核函數方法的廣泛應用,與其特點是分不開的:
  1)核函數的引入避免了“維數災難”,大大減小了計算量。而輸入空間的維數n對核函數矩陣無影響,因此,核函數方法可以有效處理高維輸入。
  2)無需知道非線性變換函數Φ的形式和參數.
  3)核函數的形式和參數的變化會隱式地改變從輸入空間到特征空間的映射,進而對特征空間的性質產生影響,最終改變各種核函數方法的性能。
  4)核函數方法可以和不同的算法相結合,形成多種不同的基于核函數技術的方法,且這兩部分的設計可以單獨進行,并可以為不同的應用選擇不同的核函數和算法。
  (4)常見核函數
  核函數的確定并不困難,滿足Mercer定理的函數都可以作為核函數。常用的核函數可分為兩類,即內積核函數和平移不變核函數,如:
  1)高斯核函數K(x,xi) =exp(-||x-xi||2/2σ2;
  2)多項式核函數K(x,xi)=(x·xi+1)^d, d=1,2,…,N;
  3)感知器核函數K(x,xi) =tanh(βxi+b);
  4)樣條核函數K(x,xi) = B2n+1(x-xi)。
 ?。?)核函數方法實施步驟
  核函數方法是一種模塊化(Modularity)方法,它可分為核函數設計和算法設計兩個部分,具體為:
  1)收集和整理樣本,并進行標準化;
  2)選擇或構造核函數;
  3)用核函數將樣本變換成為核函數矩陣,這一步相當于將輸入數據通過非線性函數映射到高維
  特征空間;
  4)在特征空間對核函數矩陣實施各種線性算法;
  5)得到輸入空間中的非線性模型。
  顯然,將樣本數據核化成核函數矩陣是核函數方法中的關鍵。注意到核函數矩陣是l×l的對稱矩陣,其中l為樣本數。
  (6)核函數在模式識別中的應用
  1)新方法。主要用在基于結構風險最小化(Structural Risk Minimization,SRM)的SVM中。
  2)傳統方法改造。如核主元分析(kernel PCA)、核主元回歸(kernel PCR)、核部分最小二乘法(kernel PLS)、核Fisher判別分析(Kernel Fisher Discriminator, KFD)、核獨立主元分析(Kernel Independent Component Analysis,KICA)等,這些方法在模式識別等不同領域的應用中都表現了很好的性能。

軟件特別說明

標簽: libsvm 工具箱 向量機 源碼軟件

其他版本下載
網友評論
回頂部 去下載

關于本站|下載幫助|下載聲明|軟件發布|聯系我們

Copyright ? 2005-2024 m.obymc.com.All rights reserved.

浙ICP備2024132706號-1 浙公網安備33038102330474號