我尝试使用一对一运行自己的svm代码,但我在选择函数中出现错误(c,sigma)和绘图函数中的错误,我希望能帮到我,这就是代码< / p>
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 :(得分:1)
训练数据是用于训练分类器的数据(例如SVM)。
测试数据用于测试训练分类器的性能。
答案 1 :(得分:0)
两者都包含一组(x,y)对,其中x是输入向量,y是输出(类似于x所属的类)。但它们在使用和应用阶段有所不同。
当参数值不固定时,训练数据用于确定模型参数的值(有时是模型的形式)。
当参数完全固定时,使用测试数据来测试模型的质量(如精度或召回)。严格来说,您不能使用测试数据来调整任何参数,包括模型复杂性参数。测试数据仅用于测试。
开发数据集(通常与训练集分开)用于调整模型复杂性参数。