2015-12-16 98 views
-2

我是新MATLAB的。我想知道如何固定火车和测试集svm代码,因为我有find a code,代码随机选择测试和训练集。我的数据库是YMU数据库,我应该如何解决使用svm码火车和测试集。因为我用的是crossvalind随机选择火车和测试集。我应该用crossvalind改变哪个变量?如何修复测试,并使用MATLAB的SVM训练集?

%load YMU database 
%NMC is non-makeup , MC is makeup 
%testingset = non-makeup, trainingset is makeup 
load TestingSetNMC.mat 
load TrainingSetMC.mat 
load gnd_Test.mat 
load gnd_Train.mat 

data1 = TrainingSet; 
data2 = TestingSet; 
groups1 = ismember(gnd_Train,'data1'); 
groups2 = ismember(gnd_Test,'data2'); 
%crossvalind is random choose 
[train] = crossvalind('holdOut',groups1); 
[test] = crossvalind('holdOut',groups2); 
cp = classperf(groups1); 
svmStruct = svmtrain(data1(train,:),groups1(train),'showplot',true); 
classes = svmclassify(svmStruct,data2(test,:),'showplot',true); 
classperf(cp,classes,test); 
cp.CorrectRate 

回答

0

随着产生伪随机输出则可以通过明确指定了随机数发生器的种子和方法控制该输出(最)MATLAB函数。

在你的情况,请将以下行的任何地方打电话crossvalind前:

rng(1, 'twister'); 

这台种子1和方法Mersenne扭曲。在为rng的文档,你会发现有关控制伪随机输出更详细的解释。

相关问题