LIBSVM的使用方法與引數設定
LIBSVM
資料格式需要----------------------
決策屬性 條件屬性a 條件屬性b ...
2 1:7 2:5 ...
1 1:4 2:2 ...
資料格式轉換----------------------
當資料較少時,可以用formatdatalibsvm輕鬆地將文字資料轉換成為svm工具使用的資料。
使用方法為:
1,開啟FormatDataLibsvm.xls然後將資料貼上到sheet1的topleft單元。
輸入格式為:
條件屬性a 條件屬性b ... 決策屬性
7 5 ... 2
4 2 ... 1
輸出資料格式是
決策屬性 條件屬性a 條件屬性b ...
2 1:7 2:5 ...
1 1:4 2:2 ...
2,再"工具"-->"巨集"-->執行下面有一個選項(FormatDatatoLibsvm)-->執行,要選中這個然後執行就可以了 ,這時資料轉換的問題就解決了(如果沒有巨集選項,點選“開始--excel選項---在功能區顯示“開發工具”選項卡”)
3,可以copy到一個記事本中即可。但是注意在用libsvm的時候要在命令列輸入.txt字尾。
svm引數說明----------------------
如果你要輸出類的概率,一定要有-b引數
svm-train training_set_file model_file
svm-predict test_file model_fileoutput_file
自動指令碼:python easy.pytrain_data test_data
自動選擇最優引數,自動進行歸一化。
對訓練集合和測試結合,使用同一個歸一化引數。
-c:引數
-g: 引數
-v:交叉驗證數
-s svm_type : set type of SVM (default 0)
0 -- C-SVC
1 -- nu-SVC
2 -- one-class SVM
3 -- epsilon-SVR
4 -- nu-SVR
-t kernel_type : set type of kernelfunction (default 2)
0 -- linear: u'*v
1 -- polynomial: (gamma*u'*v + coef0)^degree
2 -- radial basis function: exp(-gamma*|u-v|^2)
3 -- sigmoid: tanh(gamma*u'*v + coef0)
-d degree : set degree in kernel function(default 3)
-g gamma : set gamma in kernel function(default1/num_features)
-r coef0 : set coef0 in kernel function(default 0)
-c cost : set the parameter C of C-SVC,epsilon-SVR, and nu-SVR(default 1)
-n nu : set the parameter nu of nu-SVC,one-class SVM, and nu-SVR(default 0.5)
-p epsilon : set the epsilon in lossfunction of epsilon-SVR(default 0.1)
-m cachesize : set cache memory size in MB(default 100)
-e epsilon : set tolerance of terminationcriterion (default0.001)
-h shrinking: whether to use the shrinkingheuristics, 0 or 1(default 1)
-b probability_estimates: whether to traina SVC or SVR model forprobability estimates, 0 or 1 (default 0)(如果需要估計分到每個類的概率,則需要設定這個)
-wi weight: set the parameter C of class ito weight*C, for C-SVC(default 1)
Thek in the -g option means the number of attributes in theinput data.
libsvm使用誤區----------------------
(1) 直接將訓練集合和測試集合簡單歸一化到[0,1]區間,可能導致實驗結果很差。
(2) 如果樣本的特徵數非常多,那麼就不必使用RBF核將樣本對映到高維空間。
a) 在特徵數非常多的情況下,使用線性核,結果已經非常好,並且只需要選擇引數C即可。
b) 雖然說RBF核的結果至少比線性核好,前提下搜尋整個的空間。
(3) 樣本數<<特徵數的情況:
a) 推薦使用線性核,可以達到與RBF同樣的效能。
(4) 樣本數和特徵數都非常多:推薦使用liblinear,更少的時間和記憶體,可比的準確率。
(5) 樣本數>>特徵數:如果想使用線性模型,可以使用liblinear,並且使用-s 2引數
libsvm在訓練model的時候,有如下引數要設定,當然有預設的引數,但是在具體應用方面效果會大大折扣。
Options:可用的選項即表示的涵義如下
-s svm型別:SVM設定型別(預設0)
0 -- C-SVC
1 --v-SVC
2 –一類SVM
3 -- e -SVR
4 -- v-SVR
-t 核函式型別:核函式設定型別(預設2)
0 –線性:u'v
1 –多項式:(r*u'v + coef0)^degree
2 – RBF函式:exp(-gamma|u-v|^2)
3 –sigmoid:tanh(r*u'v + coef0)
-d degree:核函式中的degree設定(針對多項式核函式)(預設3)
-g r(gama):核函式中的gamma函式設定(針對多項式/rbf/sigmoid核函式)(預設1/ k)
-r coef0:核函式中的coef0設定(針對多項式/sigmoid核函式)((預設0)
-c cost:設定C-SVC,e -SVR和v-SVR的引數(損失函式)(預設1)
-n nu:設定v-SVC,一類SVM和v- SVR的引數(預設0.5)
-p p:設定e -SVR 中損失函式p的值(預設0.1)
-m cachesize:設定cache記憶體大小,以MB為單位(預設40)
-e eps:設定允許的終止判據(預設0.001)
-h shrinking:是否使用啟發式,0或1(預設1)
-wi weight:設定第幾類的引數C為weight*C(C-SVC中的C)(預設1)
-v n: n-fold互動檢驗模式,n為fold的個數,必須大於等於2
其中-g選項中的k是指輸入資料中的屬性數。option -v 隨機地將資料剖分為n部
當構建完成model後,還要為上述引數選擇合適的值,方法主要有Gridsearch,其他的感覺不常用,Gridsearch說白了就是窮舉。
網格引數尋優函式(分類問題):SVMcgForClass
[bestCVaccuracy,bestc,bestg]=
SVMcgForClass(train_label,train,
cmin,cmax,gmin,gmax,v,cstep,gstep,accstep)
輸入:
train_label:訓練集的標籤,格式要求與svmtrain相同。
train:訓練集,格式要求與svmtrain相同。
cmin,cmax:懲罰引數c的變化範圍,即在[2^cmin,2^cmax]範圍內尋找最佳的引數c,預設值為cmin=-8,cmax=8,即預設懲罰引數c的範圍是[2^(-8),2^8]。
gmin,gmax:RBF核引數g的變化範圍,即在[2^gmin,2^gmax]範圍內尋找最佳的RBF核引數g,預設值為gmin=-8,gmax=8,即預設RBF核引數g的範圍是[2^(-8),2^8]。
v:進行CrossValidation過程中的引數,即對訓練集進行v-foldCross Validation,預設為3,即預設進行3折CV過程。
cstep,gstep:進行引數尋優是c和g的步進大小,即c的取值為2^cmin,2^(cmin+cstep),…,2^cmax,,g的取值為2^gmin,2^(gmin+gstep),…,2^gmax,預設取值為cstep=1,gstep=1。
accstep:最後引數選擇結果圖中準確率離散化顯示的步進間隔大小([0,100]之間的一個數),預設為4.5。
輸出:
bestCVaccuracy:最終CV意義下的最佳分類準確率。
bestc:最佳的引數c。
bestg:最佳的引數g。
網格引數尋優函式(迴歸問題):SVMcgForRegress
[bestCVmse,bestc,bestg]=
SVMcgForRegress(train_label,train,
cmin,cmax,gmin,gmax,v,cstep,gstep,msestep)
其輸入輸出與SVMcgForClass類似,這裡不再贅述。
而當你訓練完了model,在用它做classification或regression之前,應該知道model中的內容,以及其含義。
用來訓練的是libsvm自帶的heart資料
model =
Parameters: [5x1 double]
nr_class: 2
totalSV: 259 % 支援向量的數目
rho: 0.0514 % b
Label: [2x1 double] % classification中標籤的個數
ProbA: []
ProbB: []
nSV: [2x1 double] % 每類支援向量的個數
sv_coef: [259x1 double] % 支援向量對應的Wi
SVs: [259x13 double] % 裝的是259個支援向量
model.Parameters引數意義從上到下依次為:
-s svm型別:SVM設定型別(預設0)
-t 核函式型別:核函式設定型別(預設2)
-d degree:核函式中的degree設定(針對多項式核函式)(預設3)
-g r(gama):核函式中的gamma函式設定(針對多項式/rbf/sigmoid核函式) (預設類別數目的倒數)
-r coef0:核函式中的coef0設定(針對多項式/sigmoid核函式)((預設0)
SVM 怎樣能得到好的結果
1. 對資料做歸一化(simplescaling)
2. 應用 RBF kernel
3. 用cross-validation和grid-search 得到最優的c和g
4. 用得到的最優c和g訓練訓練資料
5. 測試
關於svm的C以及核函式引數設定----------------------
參考自:對支援向量機幾種常用核函式和引數選擇的比較研究
C一般可以選擇為:10^t , t=-4..4就是0.0001 到10000
選擇的越大,表示對錯誤例懲罰程度越大,可能會導致模型過擬合
在LIBSVM中-t用來指定核函式型別(預設值是2)。
0)線性核函式
(無其他引數)
1)多項式核函式
(重點是階數的選擇,即d,一般選擇1-11:1 3 5 7 9 11,也可以選擇2,4,6…)
2)RBF核函式
(徑向基RBF核心,exp{-|xi-xj|^2/均方差},其中均方差反映了資料波動的大小。
引數通常可選擇下面幾個數的倒數:0.1 0.2 0.40.6 0.8 1.6 3.2 6.4 12.8,預設的是類別數的倒數,即1/k,2分類的話就是0.5)
3)sigmoid核函式 又叫做S形核心
兩個引數g以及r:g一般可選1 23 4,r選0.2 0.4 0.60.8 1
4)自定義核函式
常用的四種核函式對應的公式如下:
與核函式相對應的libsvm引數:
1)對於線性核函式,沒有專門需要設定的引數
2)對於多項式核函式,有三個引數。-d用來設定多項式核函式的最高此項次數,也就是公式中的d,預設值是3。-g用來設定核函式中的gamma引數設定,也就是公式中的第一個r(gamma),預設值是1/k(k是類別數)。-r用來設定核函式中的coef0,也就是公式中的第二個r,預設值是0。
3)對於RBF核函式,有一個引數。-g用來設定核函式中的gamma引數設定,也就是公式中的第一個r(gamma),預設值是1/k(k是類別數)。
4)對於sigmoid核函式,有兩個引數。-g用來設定核函式中的gamma引數設定,也就是公式中的第一個r(gamma),預設值是1/k(k是類別數)。-r用來設定核函式中的coef0,也就是公式中的第二個r,預設值是0。
相關推薦
LIBSVM的使用方法與引數設定
LIBSVM 資料格式需要---------------------- 決策屬性 條件屬性a 條件屬性b ... 2 1:7 2:5 ... 1 1:4 2:2 ... 資料格式轉換---------------------- 當資料較少時,可以用formatdatalib
LIBSVM使用方法及引數設定
LIBSVM 資料格式需要---------------------- 決策屬性 條件屬性a 條件屬性b ... 2 1:7 2:5 ... 1 1:4 2:2 ... 資料格式轉換---------------------- 當資料較少時,可以用form
MySQL的常見儲存引擎介紹與引數設定調優(轉載)
原文地址:http://www.cnblogs.com/demon89/p/8490229.html MySQL常用儲存引擎之MyISAM 特性: 1、併發性與鎖級別 2、表損壞修復 check table tablename repair table tabl
HBase Major Compaction 原理精講與引數設定建議剖析-OLAP商業環境實戰
本套技術部落格是作者(秦凱新)平時工作的總結和昇華,通過從真實商業環境抽取案例進行總結和分享,並給出商業應用的調優建議和叢集環境容量規劃等內容,請持續關注本套部落格。版權宣告:禁止轉載,歡迎學習。QQ郵箱地址:[email protected],如有任何學術交流,可隨時聯絡。
C# 方法與引數 常見名稱空間彙總 using的使用 main方法引數
本文主要講 C# 常見名稱空間 using static 指令 && 呼叫靜態方法 巢狀名稱空間&&作用域 別名 Main() 方法 C# 常見名稱空間 名稱空間 作用 System 建立檔案是預設引入,處理數學計算、、環境變數、輸出控制檯、垃圾回收器及一
C# 方法與引數 常見名稱空間彙總 using的使用 main方法引數 本文主要講
本文主要講 C# 常見名稱空間 using static 指令 && 呼叫靜態方法 巢狀名稱空間&&作用域 別名 Main() 方法 C# 常見名稱空間 名稱空間 作用 System 建立檔案是預設引入,處理數學計算、、環境變數
【JVM】Intellij IDEA-Main方法 JVM引數設定
最近在研究深入理解JVM虛擬機器這本書,有一章是實戰OutOfMemoryError,其中就需要在主程式啟動時就設定好VM引數,Intellij IDEA設定主程式的VM引數如下圖,【Run】-【Edit Configuration】即會出現下圖,然後設定VM
U-boot中通過ENV設定顯示裝置(如LCD)引數的方法與格式
對於一個移植比較完善的U-boot來說,顯示裝置一般也是可以使用的。在嵌入式中的LCD液晶屏一般由晶片的內建的LCD控制器或者VPSS(視訊處理子系統)來控制。在U-boot中已經實現了類似framebuffer的機制,只要在移植的時候完成對LCD控制等顯示裝置的初始化,並
exp/imp 引數設定與使用方法 (轉載)
一. 匯出工具 exp 1. 它是作業系統下一個可執行的檔案 存放目錄/ORACLE_HOME/bin exp匯出工具將資料庫中資料備份壓縮成一個二進位制系統檔案.可以在不同OS間遷移 它有三種模式: a. 使用者模式:匯出使用者所有物件以及物件中的資料;
學習筆記1:深入理解Java虛擬機器——JVM高階特性與最佳實踐_OOM(記憶體溢位)_虛擬機器引數設定_MAT
eclipse中設定debug標籤頁的vm引數 1,Run->Debug configurations->Java Application 2,選中已經寫好的專案 3,Arguments->VM arguments 4,在VM arguments 裡面就可以對虛擬機器的
Matplotlib命令與格式:tick_params引數設定
1.tick_params語法 引數:axis : {‘x’, ‘y’, ‘both’} Axis on which to operate; default is ‘both’.reset : bool If True, set all parameters to defaul
MySQL wait_timeout引數設定與網上常見錯誤小糾
discard connection com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully receive
IDEA類與方法新增註釋設定
類頭註釋 開啟file->setting->Editor->Filr and Code Templates->Includes->File Header 填入: /** * @Author xindawang * @CreateDate $DATE$
request.getParameter(“引數名”) 中文亂碼解決方法【新手設定問題】【JSP】-表單傳值問題:為什麼設定UTF-8之後還是亂碼?
request.getParameter(“引數名”) 中文亂碼解決方法【新手設定問題】【JSP】-表單傳值問題:為什麼設定UTF-8之後還是亂碼? 問題:jsp讀取的value值亂碼;設定UTF-8之後還是亂碼…… 備註:本文是轉載的,題目上增加關鍵詞方便查詢
js獲取ie版本號與html設定ie文件模式的方法
1*JavaScript獲取ie版本程式碼: var gIE = getIE(); alert(gIE.version) function getIE() { var rmsie = /(msie) ([\w.]+)/; var ua = navigator.u
request.getParameter(“引數名”) 中文亂碼解決方法【新手設定問題】【JSP】-表單傳值問題
備註:本文是轉載的,題目上增加關鍵詞方便查詢,另外部分文字排版了,方便檢視。(點選檢視源網頁) 原文: 在Java 開發中,如果框架搭建的不完善或者初學者在學習過程中,出現中文亂碼是經常的事兒。(哈。誰讓發明java語言的不是中國人呢) 今天跟大家分享幾個
KafkaOffsetMonitor監控工具的安裝與引數說明(該方法避免了監控頁面內容無法顯示和Java客戶端消費者組無法監控等問題)
概述 一個小應用程式來監視kafka消費者的進度和它們的延遲的佇列。 KafkaOffsetMonitor是用來實時監控Kafka叢集中的consumer以及在佇列中的位置(偏移量)。 你可以檢視當前的消費者組,每個topic佇列的所有partition的消費情況。可以很快地知道
python的關鍵字與引數名衝突的解決方法
在呼叫BeautifulSoup模組中的find的函式時,由於需要指定tag中name的屬性,而與find函式的位置引數產生了衝突。 find函式原型如下: find( name, attrs, recursive, text, **kwargs) 而需要呼叫它的程式碼如下: lt = soup
x210開發板uboot啟動引數設定與解析--朱友鵬嵌入式課程總結
x210開發板uboot啟動引數設定與解析 1.1 映象檔案已燒錄到開發板中 1.1.1 引數設定 setenv bootcmd "movi read kernel 30008000;bootm 30008000" setenv bootargs "console=ttyS
聚類方法:DBSCAN演算法研究(1)--DBSCAN原理、流程、引數設定、優缺點以及演算法
DBSCAN聚類演算法三部分: 1、 DBSCAN原理、流程、引數設定、優缺點以及演算法; 2、 matlab程式碼實現; 3、 C++程式碼實現及與matlab例項結果比較。 DBSCAN(Density-based