我是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
答案 0 :(得分:0)
使用(大多数)生成伪随机输出的matlab函数,您可以通过显式指定随机数生成器的种子和方法来控制该输出。
在您的情况下,请在致电crossvalind
之前将以下行放在任何位置:
rng(1, 'twister');
这将种子设置为1,将方法设置为Mersenne Twister。在rng
的文档中,您将找到有关控制伪随机输出的更详细说明。