libsvm中svmtrain的参数和返回值
對(duì)svmtrain函數(shù)的輸入?yún)?shù)和返回值進(jìn)行說(shuō)明
1. 訓(xùn)練
libsvm函數(shù)用于對(duì)訓(xùn)練集的數(shù)據(jù)進(jìn)行訓(xùn)練,得到訓(xùn)練好的模型。
model = libsvmtrain(training_label_vector, training_instance_matrix ['libsvm_options']);這個(gè)函數(shù)有三個(gè)參數(shù),其中
-training_label_vector:訓(xùn)練樣本的類標(biāo),如果有m個(gè)樣本,就是m x 1的矩陣(類型必須為double)。這里可以是二分類和多分類,類標(biāo)是(-1,1)、(1,2,3)或者其他任意用來(lái)表示不同的類別的數(shù)字,要轉(zhuǎn)成double類型。
-training_instance_matrix:訓(xùn)練樣本的特征,如果有m個(gè)樣本,每個(gè)樣本特征是n維,則為m x n的矩陣(類型必須為double)。當(dāng)使用precomputed核時(shí),[training_instance_matrix]由兩部分組成,第一列為長(zhǎng)度m,從1-m的序號(hào),第二列之后是訓(xùn)練樣本核。例如:
-libsvm_options:訓(xùn)練的參數(shù),在第3點(diǎn)詳細(xì)介紹。
2. 預(yù)測(cè)
libpredict函數(shù)用于對(duì)測(cè)試集的數(shù)據(jù)進(jìn)行測(cè)試,還能對(duì)未知樣本進(jìn)行預(yù)測(cè)。
[predicted_label, accuracy, decision_values/prob_estimates] = libsvmpredict(testing_label_vector, testing_instance_matrix, model ['libsvm_options']);這個(gè)函數(shù)包括四個(gè)參數(shù),其中
-testing_label_vector:測(cè)試樣本的類標(biāo),如果有m個(gè)樣本,就是m x 1的矩陣(類型必須為double)。如果類標(biāo)未知,可以初始化為任意m x 1的double數(shù)組。
-testing_instance_matrix:測(cè)試樣本的特征,如果有m個(gè)樣本,每個(gè)樣本特征是n維,則為m x n的矩陣(類型必須為double)。
-model:使用libsvmtrain返回的模型
-libsvm_options:預(yù)測(cè)的參數(shù),與訓(xùn)練的參數(shù)形式一樣。
3. 訓(xùn)練的參數(shù)
LIBSVM訓(xùn)練時(shí)可以選擇的參數(shù)很多,包括:
-s svm類型:SVM設(shè)置類型(默認(rèn)0)0 — C-SVC; 1 –v-SVC; 2 – 一類SVM; 3 — e-SVR; 4 — v-SVR -t 核函數(shù)類型:核函數(shù)設(shè)置類型(默認(rèn)2)0 – 線性核函數(shù):u’v 1 – 多項(xiàng)式核函數(shù):(r*u’v + coef0)^degree2 – RBF(徑向基)核函數(shù):exp(-r|u-v|^2)3 – sigmoid核函數(shù):tanh(r*u’v + coef0) -d degree:核函數(shù)中的degree設(shè)置(針對(duì)多項(xiàng)式核函數(shù))(默認(rèn)3) -g r(gamma):核函數(shù)中的gamma函數(shù)設(shè)置(針對(duì)多項(xiàng)式/rbf/sigmoid核函數(shù))(默認(rèn)1/k,k為總類別數(shù)) -r coef0:核函數(shù)中的coef0設(shè)置(針對(duì)多項(xiàng)式/sigmoid核函數(shù))((默認(rèn)0) -c cost:設(shè)置C-SVC,e -SVR和v-SVR的參數(shù)(損失函數(shù))(默認(rèn)1) -n nu:設(shè)置v-SVC,一類SVM和v- SVR的參數(shù)(默認(rèn)0.5) -p p:設(shè)置e -SVR 中損失函數(shù)p的值(默認(rèn)0.1) -m cachesize:設(shè)置cache內(nèi)存大小,以MB為單位(默認(rèn)40) -e eps:設(shè)置允許的終止判據(jù)(默認(rèn)0.001) -h shrinking:是否使用啟發(fā)式,0或1(默認(rèn)1) -wi weight:設(shè)置第幾類的參數(shù)C為weight*C (C-SVC中的C) (默認(rèn)1) -v n: n-fold交互檢驗(yàn)?zāi)J?#xff0c;n為fold的個(gè)數(shù),必須大于等于2以上這些參數(shù)設(shè)置可以按照SVM的類型和核函數(shù)所支持的參數(shù)進(jìn)行任意組合,如果設(shè)置的參數(shù)在函數(shù)或SVM類型中沒(méi)有也不會(huì)產(chǎn)生影響,程序不會(huì)接受該參數(shù);如果應(yīng)有的參數(shù)設(shè)置不正確,參數(shù)將采用默認(rèn)值。
4. 訓(xùn)練返回的內(nèi)容
libsvmtrain函數(shù)返回訓(xùn)練好的SVM分類器模型,可以用來(lái)對(duì)未知的樣本進(jìn)行預(yù)測(cè)。這個(gè)模型是一個(gè)結(jié)構(gòu)體,包含以下成員:
-Parameters: 一個(gè)5 x 1的矩陣,從上到下依次表示: -s SVM類型(默認(rèn)0); -t 核函數(shù)類型(默認(rèn)2) -d 核函數(shù)中的degree設(shè)置(針對(duì)多項(xiàng)式核函數(shù))(默認(rèn)3); -g 核函數(shù)中的r(gamma)函數(shù)設(shè)置(針對(duì)多項(xiàng)式/rbf/sigmoid核函數(shù)) (默認(rèn)類別數(shù)目的倒數(shù)); -r 核函數(shù)中的coef0設(shè)置(針對(duì)多項(xiàng)式/sigmoid核函數(shù))((默認(rèn)0) -nr_class: 表示數(shù)據(jù)集中有多少類別,比如二分類時(shí)這個(gè)值即為2。 -totalSV: 表示支持向量的總數(shù)。 -rho: 決策函數(shù)wx+b中的常數(shù)項(xiàng)的相反數(shù)(-b)。 -Label: 表示數(shù)據(jù)集中類別的標(biāo)簽,比如二分類常見(jiàn)的1和-1。 -ProbA: 使用-b參數(shù)時(shí)用于概率估計(jì)的數(shù)值,否則為空。 -ProbB: 使用-b參數(shù)時(shí)用于概率估計(jì)的數(shù)值,否則為空。 -nSV: 表示每類樣本的支持向量的數(shù)目,和Label的類別標(biāo)簽對(duì)應(yīng)。如Label=[1; -1],nSV=[63; 67],則標(biāo)簽為1的樣本有63個(gè)支持向量,標(biāo)簽為-1的有67個(gè)。 -sv_coef: 表示每個(gè)支持向量在決策函數(shù)中的系數(shù)。 -SVs: 表示所有的支持向量,如果特征是n維的,支持向量一共有m個(gè),則為m x n的稀疏矩陣。另外,如果在訓(xùn)練中使用了-v參數(shù)進(jìn)行交叉驗(yàn)證時(shí),返回的不是一個(gè)模型,而是交叉驗(yàn)證的分類的正確率或者回歸的均方根誤差。
5. 預(yù)測(cè)返回的內(nèi)容
libsvmtrain函數(shù)有三個(gè)返回值,不需要的值在Matlab可以用~進(jìn)行代替。
-predicted_label:第一個(gè)返回值,表示樣本的預(yù)測(cè)類標(biāo)號(hào)。
-accuracy:第二個(gè)返回值,一個(gè)3 x 1的數(shù)組,表示分類的正確率、回歸的均方根誤差、回歸的平方相關(guān)系數(shù)。注意:當(dāng)使用預(yù)訓(xùn)練核時(shí),并不能取accuracy(1,1)作為分類結(jié)果,應(yīng)該取:mean(predicted_label==testlabel)
-decision_values/prob_estimates:第三個(gè)返回值,一個(gè)矩陣包含決策的值或者概率估計(jì)。對(duì)于n個(gè)預(yù)測(cè)樣本、k類的問(wèn)題,如果指定“-b 1”參數(shù),則n x k的矩陣,每一行表示這個(gè)樣本分別屬于每一個(gè)類別的概率;如果沒(méi)有指定“-b 1”參數(shù),則為n x k*(k-1)/2的矩陣,每一行表示k(k-1)/2個(gè)二分類SVM的預(yù)測(cè)結(jié)果。
總結(jié)
以上是生活随笔為你收集整理的libsvm中svmtrain的参数和返回值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pytest测试实战pdf_Pytest
- 下一篇: caffe使用过程中遇到的一些问题错误