Libsvm在matlab環境下使用指南

2021-06-22 15:26:19 字數 3136 閱讀 8787

一、安裝

二、使用

在使用之前,要對libsvm做乙個了解,而最好的資料自然是libsvm種readme檔案了。readme檔案包含了介紹,安裝,svm返回的模型引數,以及例子等。libsvm主要用了兩個函式svmtrain,svmpredict,如果你在用的時候忘了具體的引數,可以在matlab命令提示符下輸入函式名就有相關的提示。

用法:1.model = svmtrain(training_label_vector, training_instance_matrix [, 'libsvm_options']);

(1)training_label_vector, training_instance_matrix

training_label_vector和

training_instance_matrix就是要訓練的標籤和特徵了。training_label_vector一般以列向量的形式存放的,每個元素即每行代表乙個instance(一般是特徵)的標籤。而training_instance_matrix也類似每行代表乙個instance.

如圖所示,上面變數代表有930個instance來訓練,每個instance1116維,下面是對於instance的標籤。

(2)libsvm_options:

怎麼選擇呢?libsvm_options:重要的是-t,以及交叉驗證時的-v

-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

(3)返回的model:

如上圖 -parameters: 引數。

-nr_class: 類的數目。

-totalsv:總的支援向量數目。

-rho: -判決函式wx+b的b。

-label: 每個類的標籤。

-proba: 

成對的概率資訊,如果b是 0則為空。

-probb: 成對的概率資訊,如果b是 0則為空。

-nsv: 每個類的支援向量

-sv_coef:判決函式的係數

-svs:支援向量。

如果指定了'-v',那麼就實施了交叉驗證,而且返回是交叉驗證的正確率。

用法:

2. [predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model [, 'libsvm_options']);

(1)esting_label_vector, testing_instance_matrix:

類似於svmtrain

(2)libsvm_options:

-b 概率估計:預設0,1表示估計。(需要在使用時顯式表現)

(3)predicted_label, accuracy,

decision_values/prob_estimates:

predicted_label: svm **輸出向量。類似於輸入的label

accuracy: 向量包括正確率,均方誤差,方相關係數.

decision_values:每行是**k(k-1)/2二類svms的結果

prob_estimates: 每行包括k個值代表每類中測試資料所佔的概率。

三、核函式

核函式的

核函式總共有以下4種,我們要了解在什麼情況下用哪一種核函式。

一般情況下,首選rbf核,它能夠把樣本以非線性的方式對映到高維空間,所以能夠處理類標籤和特徵不是線性關係的情況。線性核只是rbf的一種特殊情況。

但是有些情況下rbf核並不適用,比如特徵的數量特別大的時候,一般僅僅使用線性核。

rbf核中有兩個引數需要確定 

ps:什麼時候用rbf,什麼時候用線性核

1.樣本數量遠遠小於特徵數時

比如訓練和測試資料有二三十個而特徵維數有好幾千時,採用線性核是最好的,不需要對映資料。

2.樣本數量和特徵數都非常大時

可以利用另一工具箱liblinear,或者用線性核

3.樣本數量遠遠大於特徵數時

用非線性核是最好的了。

參考文獻:

在matlab環境下LIBSVM的demo

2 在matlab環境下用mex setup指令,設定matlab預設編譯器,我選擇是vs2010 3 解壓後libsvm後,在ibsvm 3.20 matlab路徑下執行make.m,把c檔案生成mexw64或mexw32,供matlab呼叫 4 現在可以利用libsvm測試,回到上乙個路徑ibs...

在MATLAB中安裝libsvm

搞了一天,看了很多資料,終於搞好了matlab中呼叫大牛寫好的svm庫,將結果告訴大家避免以後走彎路。1.參考 詳解 2.操作流程 請注意 詳細操作流程請參考上面的 詳解 這裡只說大框架和詳解裡沒有提到的問題。a.設定path file set path add with subfolders 加入...

libsvm在MATLAB的安裝

本文的配置路徑為 d matlab r2010a toolbox libsvm 3.12 matlab,從始至終都是在這個目錄下進行的。當然,你也可以將編譯好的檔案拷貝到任何地方,只要你當前的工作目錄中有這四個檔案即可。我的matlab版本 r2012b,我的libsvm版本3.12 2.解壓至指定...