-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtestSyn.m
58 lines (48 loc) · 1.35 KB
/
testSyn.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
58
function test
load('synthetic.mat');
%load('syn2_2.mat');
[N,D] = size(x);
M = 5; % number of pseudo-inputs
seed = 1;
rand('seed',seed); randn('seed',seed);
model.logSigma = log(var(y,1)/4);
model.logEta = 2*log((max(x)-min(x))'*2);
model.logA0 = log(var(y,1));
%model.logA0 = log(0.1);
model.logA1 = log(1e-1);
model.logA2 = log(1e-1);
%model.logA1 = log(var(y,1));
%model.logA2 = log(var(y,1));
%model.B = linspace(min(x), max(x), M);
%model.B = x(randsample(N, M), :);
trained_model = EigenGPNS_train(model, x, y, M, 5000);
param = EigenGPNS_model2param(trained_model, D, M);
EigenGPNS_negLogLik(param, x, y, M);
save('model.mat');
% index = 3;
% range = param(index)-1:0.01:param(index)+1;
% for i = 1:size(range,2);
% param(index) = range(i);
% [f(i), g] = EigenGPNS_negLogLik(param, x, y, M);
% df(i) = g(index);
% end
% for i = 2:size(range,2)-1;
% fdf(i-1) = (f(i+1)-f(i-1))/(range(i+1)-range(i-1));
% end
% subplot(2,1,1);
% plot(range, f);
% subplot(2,1,2);
% plot(range, df);
% hold on;
% plot(range(1,2:size(range,2)-1), fdf, 'r');
% hold off;
[mu s2] = EigenGPNS_pred(trained_model, x, y, xtest);
set(gcf,'defaultlinelinewidth',1.3);
plot(x,y,'.m','MarkerSize', 12);
hold on;
plot(xtest, mu);
plot(xtest, mu+2*sqrt(s2), 'r');
plot(xtest, mu-2*sqrt(s2), 'r');
plot(trained_model.B,(min(y)-0.5)*ones(M,1), '+g', 'MarkerSize', 12);
hold off;
end