Attachment 'U04_test_CV_krr.m'
Download 1 function U04_test_CV_krr
2
3 % Generate data.
4 n = 20;
5 x = linspace(-1, 1, n);
6 y = [ 1.153741e+00, 8.145612e-01, 4.369920e-01, 4.227247e-01, 2.699726e-01, 2.347085e-01, 1.136709e-01, 4.134774e-02, -4.843545e-02, -3.683275e-03, -1.416303e-01, 8.616478e-02, -6.309822e-02, 6.957640e-02, 2.097653e-01, 3.599886e-01, 4.604808e-01, 7.970857e-01, 9.627512e-01, 1.062644e+00 ];
7
8 % Plot data.
9 clf; hold on;
10 plot(x,y,'bo');
11
12 % Select kernel width sigma using 10x10-CV using squared loss.
13 [M,opt_param] = cv(x,y,@(tr_x,tr_y,sigma) krr(tr_x,tr_y,'gaussian',sigma), ...
14 { 'sigma', logspace(0,1,10) }, [], [], @loss_squared);
15
16 % Compute and plot predictions.
17 xx = linspace(-1,1,200);
18 yy = apply(M,xx);
19 plot(xx,yy,'r--');
20
21 % Plot truth.
22 plot(xx,f(xx),'b--');
23
24 legend('Data', 'Predictions', 'Truth');
25 title(sprintf('Kernel width selected by CV: %f', opt_param.sigma));
26
27 % Squared loss.
28 function sqloss = loss_squared(X,y_true,y_pred)
29 sqloss = y_true-y_pred;
30 sqloss = sum(sqloss(:).^2);
31
32 % True regression function.
33 function y = f(x)
34 y = x.^2;
35
36 % Apply function.
37 function y = apply(M,X)
38 y = feval(M.applyfunc, M, X);
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.You are not allowed to attach a file to this page.