2013-08-28 64 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

谢谢张博这么多...数据的空间的意思是什么,我怎么能创建它 –