forked from lawrennd/ivm
/
vivmRunDataSetLearn.m
58 lines (46 loc) · 1.65 KB
/
vivmRunDataSetLearn.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function vivmRunDataSetLearn(dataSetName, invariance, experimentNo, ...
selectionCriterion, dVal, seedVal);
% VIVMRUNDATASETLEARN Try the virtual IVM on a data set and save the results.
% IVM
if nargin < 6
seedVal = [];
randn('seed', 1e5)
rand('seed', 1e5)
else
randn('seed', seedVal);
rand('seed', seedVal);
end
jobId = getenv('PBS_JOBID');
jobName = getenv('PBS_JOBNAME');
fprintf('Seed %2.0e\n', seedVal);
if isempty(seedVal)
[X, y, XTest, yTest] = mapLoadData(dataSetName);
else
[X, y, XTest, yTest] = mapLoadData(dataSetName, seedVal);
end
capitalName = dataSetName;
capitalName(1) = upper(capitalName(1));
options = ivmOptions;
mu = zeros(size(yTest));
varSigma = zeros(size(yTest));
load(['dem' capitalName '_' ...
num2str(experimentNo) '_' ...
num2str(seedVal) '.mat'])
% Create new training set with virtual SVs.
origIndex = ivmInfoStore.I;
[X, y] = ivmVirtual(X(ivmInfoStore.I, :), y(ivmInfoStore.I, ...
:), invariance);
tic
model = ivmRun(X, y, kernStore, ...
noiseStore, selectionCriterion, dVal, ...
options);
runTime = toc;
if ~isempty(XTest) & ~isempty(yTest);
yPred = ivmOut(model, XTest);
testError = 1-sum(yPred==yTest)/size(yTest, 1);
fprintf('Data set %s, test error %2.4f\n', dataSetName, testError);
end
[kernStore, noiseStore, ivmInfoStore] = ivmDeconstruct(model);
save(['dem' capitalName '_learn_' invariance '_' num2str(experimentNo) '_d' num2str(dVal) '_seed' num2str(seedVal)], 'testError', ...
'ivmInfo', 'kern', 'noise', 'runTime', 'jobId', ...
'jobName', 'origIndex')