libsvm中svmtrain的参数和返回值
對svmtrain函數的輸入參數和返回值進行說明
1. 訓練
libsvm函數用于對訓練集的數據進行訓練,得到訓練好的模型。
model = libsvmtrain(training_label_vector, training_instance_matrix ['libsvm_options']);這個函數有三個參數,其中
-training_label_vector:訓練樣本的類標,如果有m個樣本,就是m x 1的矩陣(類型必須為double)。這里可以是二分類和多分類,類標是(-1,1)、(1,2,3)或者其他任意用來表示不同的類別的數字,要轉成double類型。
-training_instance_matrix:訓練樣本的特征,如果有m個樣本,每個樣本特征是n維,則為m x n的矩陣(類型必須為double)。當使用precomputed核時,[training_instance_matrix]由兩部分組成,第一列為長度m,從1-m的序號,第二列之后是訓練樣本核。例如:
-libsvm_options:訓練的參數,在第3點詳細介紹。
2. 預測
libpredict函數用于對測試集的數據進行測試,還能對未知樣本進行預測。
[predicted_label, accuracy, decision_values/prob_estimates] = libsvmpredict(testing_label_vector, testing_instance_matrix, model ['libsvm_options']);這個函數包括四個參數,其中
-testing_label_vector:測試樣本的類標,如果有m個樣本,就是m x 1的矩陣(類型必須為double)。如果類標未知,可以初始化為任意m x 1的double數組。
-testing_instance_matrix:測試樣本的特征,如果有m個樣本,每個樣本特征是n維,則為m x n的矩陣(類型必須為double)。
-model:使用libsvmtrain返回的模型
-libsvm_options:預測的參數,與訓練的參數形式一樣。
3. 訓練的參數
LIBSVM訓練時可以選擇的參數很多,包括:
-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)^degree2 – RBF(徑向基)核函數:exp(-r|u-v|^2)3 – sigmoid核函數:tanh(r*u’v + coef0) -d degree:核函數中的degree設置(針對多項式核函數)(默認3) -g r(gamma):核函數中的gamma函數設置(針對多項式/rbf/sigmoid核函數)(默認1/k,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以上這些參數設置可以按照SVM的類型和核函數所支持的參數進行任意組合,如果設置的參數在函數或SVM類型中沒有也不會產生影響,程序不會接受該參數;如果應有的參數設置不正確,參數將采用默認值。
4. 訓練返回的內容
libsvmtrain函數返回訓練好的SVM分類器模型,可以用來對未知的樣本進行預測。這個模型是一個結構體,包含以下成員:
-Parameters: 一個5 x 1的矩陣,從上到下依次表示: -s SVM類型(默認0); -t 核函數類型(默認2) -d 核函數中的degree設置(針對多項式核函數)(默認3); -g 核函數中的r(gamma)函數設置(針對多項式/rbf/sigmoid核函數) (默認類別數目的倒數); -r 核函數中的coef0設置(針對多項式/sigmoid核函數)((默認0) -nr_class: 表示數據集中有多少類別,比如二分類時這個值即為2。 -totalSV: 表示支持向量的總數。 -rho: 決策函數wx+b中的常數項的相反數(-b)。 -Label: 表示數據集中類別的標簽,比如二分類常見的1和-1。 -ProbA: 使用-b參數時用于概率估計的數值,否則為空。 -ProbB: 使用-b參數時用于概率估計的數值,否則為空。 -nSV: 表示每類樣本的支持向量的數目,和Label的類別標簽對應。如Label=[1; -1],nSV=[63; 67],則標簽為1的樣本有63個支持向量,標簽為-1的有67個。 -sv_coef: 表示每個支持向量在決策函數中的系數。 -SVs: 表示所有的支持向量,如果特征是n維的,支持向量一共有m個,則為m x n的稀疏矩陣。另外,如果在訓練中使用了-v參數進行交叉驗證時,返回的不是一個模型,而是交叉驗證的分類的正確率或者回歸的均方根誤差。
5. 預測返回的內容
libsvmtrain函數有三個返回值,不需要的值在Matlab可以用~進行代替。
-predicted_label:第一個返回值,表示樣本的預測類標號。
-accuracy:第二個返回值,一個3 x 1的數組,表示分類的正確率、回歸的均方根誤差、回歸的平方相關系數。注意:當使用預訓練核時,并不能取accuracy(1,1)作為分類結果,應該取:mean(predicted_label==testlabel)
-decision_values/prob_estimates:第三個返回值,一個矩陣包含決策的值或者概率估計。對于n個預測樣本、k類的問題,如果指定“-b 1”參數,則n x k的矩陣,每一行表示這個樣本分別屬于每一個類別的概率;如果沒有指定“-b 1”參數,則為n x k*(k-1)/2的矩陣,每一行表示k(k-1)/2個二分類SVM的預測結果。
總結
以上是生活随笔為你收集整理的libsvm中svmtrain的参数和返回值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytest测试实战pdf_Pytest
- 下一篇: caffe使用过程中遇到的一些问题错误