如何使用matlab修复svm中的测试和训练集?

时间:2015-12-16 05:00:51

标签: matlab svm

我是matlab的新手。我想知道如何修复 svm 代码中的列车和测试集,因为我有 find a code ,代码会随机选择测试和训练组。我的数据库是 YMU 数据库,如何使用 svm 代码修复列车和测试集。因为我使用crossvalind随机选择火车和测试集。我应该用crossvalind更改哪个变量?

%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

1 个答案:

答案 0 :(得分:0)

使用(大多数)生成伪随机输出的matlab函数,您可以通过显式指定随机数生成器的种子和方法来控制该输出。

在您的情况下,请在致电crossvalind之前将以下行放在任何位置:

rng(1, 'twister');

这将种子设置为1,将方法设置为Mersenne Twister。在rng的文档中,您将找到有关控制伪随机输出的更详细说明。