【问题标题】:How to fix the test and train set in svm using matlab?如何使用 matlab 修复 svm 中的测试和训练集?
【发布时间】:2016-03-22 03:07:53
【问题描述】:

我是 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

【问题讨论】:

    标签: matlab svm


    【解决方案1】:

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

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

    rng(1, 'twister');
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-29
      • 2020-06-11
      • 2017-06-21
      • 2019-01-31
      • 2013-08-05
      • 2012-02-21
      • 2013-12-29
      • 2018-01-21
      相关资源
      最近更新 更多