changeset 4:4b6c21158ba6

Implement validationCurve
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 21 Nov 2011 01:16:08 -0500
parents 7f4c22114134
children eddd33e57f6a
files validationCurve.m
diffstat 1 files changed, 33 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/validationCurve.m
+++ b/validationCurve.m
@@ -1,53 +1,38 @@
-function [lambda_vec, error_train, error_val] = ...
-    validationCurve(X, y, Xval, yval)
-%VALIDATIONCURVE Generate the train and validation errors needed to
-%plot a validation curve that we can use to select lambda
-%   [lambda_vec, error_train, error_val] = ...
-%       VALIDATIONCURVE(X, y, Xval, yval) returns the train
-%       and validation errors (in error_train, error_val)
-%       for different values of lambda. You are given the training set (X,
-%       y) and validation set (Xval, yval).
-%
+function [lambda_vec, error_train, error_val] = \
+      validationCurve(X, y, Xval, yval)
+  ##VALIDATIONCURVE Generate the train and validation errors needed to
+  ##plot a validation curve that we can use to select lambda
+  ##   [lambda_vec, error_train, error_val] = ...
+  ##       VALIDATIONCURVE(X, y, Xval, yval) returns the train
+  ##       and validation errors (in error_train, error_val)
+  ##       for different values of lambda. You are given the training set (X,
+  ##       y) and validation set (Xval, yval).
+  ##
 
-% Selected values of lambda (you should not change this)
-lambda_vec = [0 0.001 0.003 0.01 0.03 0.1 0.3 1 3 10]';
+  ## Selected values of lambda (you should not change this)
+  lambda_vec = [0 0.001 0.003 0.01 0.03 0.1 0.3 1 3 10]';
 
-% You need to return these variables correctly.
-error_train = zeros(length(lambda_vec), 1);
-error_val = zeros(length(lambda_vec), 1);
+  ## You need to return these variables correctly.
+  error_train = zeros (length (lambda_vec), 1);
+  error_val = zeros (length (lambda_vec), 1);
 
-% ====================== YOUR CODE HERE ======================
-% Instructions: Fill in this function to return training errors in 
-%               error_train and the validation errors in error_val. The 
-%               vector lambda_vec contains the different lambda parameters 
-%               to use for each calculation of the errors, i.e, 
-%               error_train(i), and error_val(i) should give 
-%               you the errors obtained after training with 
-%               lambda = lambda_vec(i)
-%
-% Note: You can loop over lambda_vec with the following:
-%
-%       for i = 1:length(lambda_vec)
-%           lambda = lambda_vec(i);
-%           % Compute train / val errors when training linear 
-%           % regression with regularization parameter lambda
-%           % You should store the result in error_train(i)
-%           % and error_val(i)
-%           ....
-%           
-%       end
-%
-%
+  ## ====================== YOUR CODE HERE ======================
+  ## Instructions: Fill in this function to return training errors in 
+  ##               error_train and the validation errors in error_val. The 
+  ##               vector lambda_vec contains the different lambda parameters 
+  ##               to use for each calculation of the errors, i.e, 
+  ##               error_train(i), and error_val(i) should give 
+  ##               you the errors obtained after training with 
+  ##               lambda = lambda_vec(i)
+  ##
+  ## Note: You can loop over lambda_vec with the following:
+  ##
+  for i = 1:length (lambda_vec)
+    lambda = lambda_vec(i);
+    theta = trainLinearReg (X, y, lambda);
 
-
-
-
-
-
+    error_train(i) = sumsq (X*theta - y)/(2*length(y));
+    error_val(i) = sumsq (Xval*theta - yval)/(2*length(yval));
+  endfor
 
-
-
-
-% =========================================================================
-
-end
+endfunction