Attachment 'sheet10.m'
Download 1 function sheet10
2
3 % generate some data
4 sheet10_data
5
6 % plot data
7 plot(X(Y == 1, 1), X(Y == 1, 2), 'r+', ...
8 X(Y == -1, 1), X(Y == -1, 2), 'bo');
9
10 % learn an SVM
11 width = 0.01;
12 C = 1e5;
13
14 K = rbfkern(width, X);
15 svm = trainSVM(K, Y, C);
16 Yh = predictSVM(K, svm);
17
18 % predict the solution
19 N = 50;
20 [MX, MY] = meshgrid(linspace(0, 1, N), linspace(0, 1, N));
21 XP = [reshape(MX, N*N, 1), reshape(MY, N*N, 1)];
22 KP = rbfkern(width, XP, X);
23 YP = predictSVM(KP, svm);
24 F = reshape(YP, N, N);
25 hold on
26 contour(MX, MY, F, [-1, 0, 1]);
27 % comment out next line for octave
28 surf(MX, MY, F, 'FaceAlpha', 0.2); shading interp; caxis([-2 2])
29 hold off
30 grid
31 colormap([linspace(1, 0, 100)', linspace(1, 0, 100)', ones(100, 1), ;
32 0 0 0;
33 ones(100, 1), linspace(0, 1, 100)', linspace(0, 1, 100)'])
34
35 title(sprintf('Error rate: %.2f%%', mean(sign(Yh) ~= Y) * 100));
36
37 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38 %
39 % Your solution below
40
41 % 3a. train a support vector machine using the built-in generic quadratic
42 % optimizer (quadprog for matlab, qp for octave).
43 % Input:
44 % K - kernel matrix (n x n) of training data
45 % Y - labels (1 x n)
46 % C - regularization constant
47 % Output:
48 % svm.alpha - learned alphas
49 % svm.b - learned b
50 % svm.y - training Ys
51 function svm = trainSVM(K, Y, C)
52 % ...
53
54 % 3b. Predict the labels given the kernel matrix built from the
55 % test/training data points, and the svm structure returned by trainSVM.
56 % Input:
57 % K: - kernel matrix (m x n) of test/training data
58 % svm: - svm structure
59 % Output:
60 % Yk - predicted labels (1 x m)
61 function Yh = predictSVM(K, svm)
62 % ...
63
64 % 3c. Compute the rbf kernel. If Y is missing, assume X = Y. Do not use
65 % for loops to compute the pairwise distances!
66 % Input:
67 % w: - kernel width
68 % X: - Input vectors (d x n)
69 % Y: - Input vectors (d x m)
70 % Output:
71 % K: - Kernel matrix (n x m)
72 function K = rbfkern(w, X, Y)
73 % ...
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.