2013-08-28 102 views
-4

我嘗試運行自己的svm代碼使用一對一,但我有一個錯誤在選定的函數最好(C,西格瑪)和一個錯誤的情節函數,我希望能給你你的這是代碼多類支持向量機分類

clear 
clc 
close all 
%load the data 
load dataset 
load spacies 
[~,~,group] = unique(spacies); 
data=dataset(1:12,1:19); 
xdata=zscore(data); 
%group=spacies(1:end,1); 
p=0.5; 
[train,test]=crossvalind('HoldOut',group,p); 
trainingsample=xdata(train,:); 
traininglabel=group(train,1); 
testingsample=xdata(test,:); 
testinglabel=group(test,1); 
numclass=max(group); 
for i=1:numclass 
    for j=i+1:numclass 
     inij=(traininglabel==i)|(traininglabel==j); 
     trainingsampleij=trainingsample(inij,:); 
     traininglabelij=traininglabel(inij,:); 
     %%k-fold using training data 
     numfold=8; 
     indices=crossvalind('kfold',traininglabelij,numfold); 
     sigma=2.^(-10:1:10); 
     C=2.^(-5:1:5); 
     [bestsigma,bestC]=BestParametersRBF(trainingsampleij,... 
          traininglabelij,sigma,C,indices,numfold); 
     %%performance 
     svmStruct=svmtrain(trainingsampleij,traininglabelij,... 
      'showplot',true,'kernel_function','rbf','rbf_sigma',bestsigma,... 
      'boxconstraint',bestC); 
     title(sprintf('Kernel Function: %s','rbf',... 
       func2str(svmStruct.KernelFunction)),... 
         'interpreter','none'); 
     classes=svmclassify(svmStruct,testingsample,'showplot',true); 
    end 
end 
acc=mean(grp2idx(classes)==grp2idx(testinglabel)); 
+0

你可以通過簡單的搜索來獲得答案http://stats.stackexchange.com/questions/19048/what-is-the-difference-between-test-set-and-validation-set – lejlot

回答

1

訓練數據是用來訓練分類器(例如SVM)的數據。

測試數據用於測試訓練分類器的性能。

+0

謝謝你GilLevi .. 。但是你能告訴我如何進行測試並從矩陣輸入(1個rawx3600columns)中訓練? –

+0

我不太瞭解你的數據是如何組織的。請解釋。 – GilLevi

+0

您好吉爾萊維..你能幫我找到我的代碼上面的錯誤 –

0

兩者都包含一組(x,y)對,其中x是輸入向量,y是輸出(如x所屬的類)。但它們在使用和應用階段是不同的。

當參數的值不固定時,訓練數據用於確定模型參數的值(有時是模型的形式)。

測試數據用於參數完全固定時測試模型質量(如精度或回憶)。嚴格地說,您不能使用測試數據來調整任何參數,包括模型複雜度參數。測試數據僅用於測試

開發數據集(通常與訓練集分開)用於調整模型複雜度參數。

+0

謝謝張博這麼多...數據的空間的意思是什麼,我怎麼能創建它 –