From d93d1111064e19a7d4e225ed0850f5622a491217 Mon Sep 17 00:00:00 2001 From: neingeist Date: Wed, 5 Nov 2014 11:20:50 +0100 Subject: [PATCH] Add programming exercise 5 --- ex5.pdf | Bin 0 -> 185903 bytes ex5/ex5.m | 220 ++++++++++++++ ex5/ex5data1.mat | Bin 0 -> 1321 bytes ex5/featureNormalize.m | 17 ++ ex5/fmincg.m | 175 +++++++++++ ex5/learningCurve.m | 66 +++++ ex5/linearRegCostFunction.m | 37 +++ ex5/plotFit.m | 28 ++ ex5/polyFeatures.m | 25 ++ ex5/submit.m | 577 ++++++++++++++++++++++++++++++++++++ ex5/submitWeb.m | 20 ++ ex5/trainLinearReg.m | 21 ++ ex5/validationCurve.m | 53 ++++ 13 files changed, 1239 insertions(+) create mode 100644 ex5.pdf create mode 100644 ex5/ex5.m create mode 100644 ex5/ex5data1.mat create mode 100644 ex5/featureNormalize.m create mode 100644 ex5/fmincg.m create mode 100644 ex5/learningCurve.m create mode 100644 ex5/linearRegCostFunction.m create mode 100644 ex5/plotFit.m create mode 100644 ex5/polyFeatures.m create mode 100644 ex5/submit.m create mode 100644 ex5/submitWeb.m create mode 100644 ex5/trainLinearReg.m create mode 100644 ex5/validationCurve.m diff --git a/ex5.pdf b/ex5.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8200c93673851206d2e75af6445b2077bcb819e3 GIT binary patch literal 185903 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%0D60vdjtXBV5-`=Cl?F__I@4PJPT!CXE$mRIO6 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 InY~{C067#^{r~^~ literal 0 HcmV?d00001 diff --git a/ex5/featureNormalize.m b/ex5/featureNormalize.m new file mode 100644 index 0000000..da03bee --- /dev/null +++ b/ex5/featureNormalize.m @@ -0,0 +1,17 @@ +function [X_norm, mu, sigma] = featureNormalize(X) +%FEATURENORMALIZE Normalizes the features in X +% FEATURENORMALIZE(X) returns a normalized version of X where +% the mean value of each feature is 0 and the standard deviation +% is 1. This is often a good preprocessing step to do when +% working with learning algorithms. + +mu = mean(X); +X_norm = bsxfun(@minus, X, mu); + +sigma = std(X_norm); +X_norm = bsxfun(@rdivide, X_norm, sigma); + + +% ============================================================ + +end diff --git a/ex5/fmincg.m b/ex5/fmincg.m new file mode 100644 index 0000000..34bf539 --- /dev/null +++ b/ex5/fmincg.m @@ -0,0 +1,175 @@ +function [X, fX, i] = fmincg(f, X, options, P1, P2, P3, P4, P5) +% Minimize a continuous differentialble multivariate function. Starting point +% is given by "X" (D by 1), and the function named in the string "f", must +% return a function value and a vector of partial derivatives. The Polack- +% Ribiere flavour of conjugate gradients is used to compute search directions, +% and a line search using quadratic and cubic polynomial approximations and the +% Wolfe-Powell stopping criteria is used together with the slope ratio method +% for guessing initial step sizes. Additionally a bunch of checks are made to +% make sure that exploration is taking place and that extrapolation will not +% be unboundedly large. The "length" gives the length of the run: if it is +% positive, it gives the maximum number of line searches, if negative its +% absolute gives the maximum allowed number of function evaluations. You can +% (optionally) give "length" a second component, which will indicate the +% reduction in function value to be expected in the first line-search (defaults +% to 1.0). The function returns when either its length is up, or if no further +% progress can be made (ie, we are at a minimum, or so close that due to +% numerical problems, we cannot get any closer). If the function terminates +% within a few iterations, it could be an indication that the function value +% and derivatives are not consistent (ie, there may be a bug in the +% implementation of your "f" function). The function returns the found +% solution "X", a vector of function values "fX" indicating the progress made +% and "i" the number of iterations (line searches or function evaluations, +% depending on the sign of "length") used. +% +% Usage: [X, fX, i] = fmincg(f, X, options, P1, P2, P3, P4, P5) +% +% See also: checkgrad +% +% Copyright (C) 2001 and 2002 by Carl Edward Rasmussen. Date 2002-02-13 +% +% +% (C) Copyright 1999, 2000 & 2001, Carl Edward Rasmussen +% +% Permission is granted for anyone to copy, use, or modify these +% programs and accompanying documents for purposes of research or +% education, provided this copyright notice is retained, and note is +% made of any changes that have been made. +% +% These programs and documents are distributed without any warranty, +% express or implied. As the programs were written for research +% purposes only, they have not been tested to the degree that would be +% advisable in any important application. All use of these programs is +% entirely at the user's own risk. +% +% [ml-class] Changes Made: +% 1) Function name and argument specifications +% 2) Output display +% + +% Read options +if exist('options', 'var') && ~isempty(options) && isfield(options, 'MaxIter') + length = options.MaxIter; +else + length = 100; +end + + +RHO = 0.01; % a bunch of constants for line searches +SIG = 0.5; % RHO and SIG are the constants in the Wolfe-Powell conditions +INT = 0.1; % don't reevaluate within 0.1 of the limit of the current bracket +EXT = 3.0; % extrapolate maximum 3 times the current bracket +MAX = 20; % max 20 function evaluations per line search +RATIO = 100; % maximum allowed slope ratio + +argstr = ['feval(f, X']; % compose string used to call function +for i = 1:(nargin - 3) + argstr = [argstr, ',P', int2str(i)]; +end +argstr = [argstr, ')']; + +if max(size(length)) == 2, red=length(2); length=length(1); else red=1; end +S=['Iteration ']; + +i = 0; % zero the run length counter +ls_failed = 0; % no previous line search has failed +fX = []; +[f1 df1] = eval(argstr); % get function value and gradient +i = i + (length<0); % count epochs?! +s = -df1; % search direction is steepest +d1 = -s'*s; % this is the slope +z1 = red/(1-d1); % initial step is red/(|s|+1) + +while i < abs(length) % while not finished + i = i + (length>0); % count iterations?! + + X0 = X; f0 = f1; df0 = df1; % make a copy of current values + X = X + z1*s; % begin line search + [f2 df2] = eval(argstr); + i = i + (length<0); % count epochs?! + d2 = df2'*s; + f3 = f1; d3 = d1; z3 = -z1; % initialize point 3 equal to point 1 + if length>0, M = MAX; else M = min(MAX, -length-i); end + success = 0; limit = -1; % initialize quanteties + while 1 + while ((f2 > f1+z1*RHO*d1) | (d2 > -SIG*d1)) & (M > 0) + limit = z1; % tighten the bracket + if f2 > f1 + z2 = z3 - (0.5*d3*z3*z3)/(d3*z3+f2-f3); % quadratic fit + else + A = 6*(f2-f3)/z3+3*(d2+d3); % cubic fit + B = 3*(f3-f2)-z3*(d3+2*d2); + z2 = (sqrt(B*B-A*d2*z3*z3)-B)/A; % numerical error possible - ok! + end + if isnan(z2) | isinf(z2) + z2 = z3/2; % if we had a numerical problem then bisect + end + z2 = max(min(z2, INT*z3),(1-INT)*z3); % don't accept too close to limits + z1 = z1 + z2; % update the step + X = X + z2*s; + [f2 df2] = eval(argstr); + M = M - 1; i = i + (length<0); % count epochs?! + d2 = df2'*s; + z3 = z3-z2; % z3 is now relative to the location of z2 + end + if f2 > f1+z1*RHO*d1 | d2 > -SIG*d1 + break; % this is a failure + elseif d2 > SIG*d1 + success = 1; break; % success + elseif M == 0 + break; % failure + end + A = 6*(f2-f3)/z3+3*(d2+d3); % make cubic extrapolation + B = 3*(f3-f2)-z3*(d3+2*d2); + z2 = -d2*z3*z3/(B+sqrt(B*B-A*d2*z3*z3)); % num. error possible - ok! + if ~isreal(z2) | isnan(z2) | isinf(z2) | z2 < 0 % num prob or wrong sign? + if limit < -0.5 % if we have no upper limit + z2 = z1 * (EXT-1); % the extrapolate the maximum amount + else + z2 = (limit-z1)/2; % otherwise bisect + end + elseif (limit > -0.5) & (z2+z1 > limit) % extraplation beyond max? + z2 = (limit-z1)/2; % bisect + elseif (limit < -0.5) & (z2+z1 > z1*EXT) % extrapolation beyond limit + z2 = z1*(EXT-1.0); % set to extrapolation limit + elseif z2 < -z3*INT + z2 = -z3*INT; + elseif (limit > -0.5) & (z2 < (limit-z1)*(1.0-INT)) % too close to limit? + z2 = (limit-z1)*(1.0-INT); + end + f3 = f2; d3 = d2; z3 = -z2; % set point 3 equal to point 2 + z1 = z1 + z2; X = X + z2*s; % update current estimates + [f2 df2] = eval(argstr); + M = M - 1; i = i + (length<0); % count epochs?! + d2 = df2'*s; + end % end of line search + + if success % if line search succeeded + f1 = f2; fX = [fX' f1]'; + fprintf('%s %4i | Cost: %4.6e\r', S, i, f1); + s = (df2'*df2-df1'*df2)/(df1'*df1)*s - df2; % Polack-Ribiere direction + tmp = df1; df1 = df2; df2 = tmp; % swap derivatives + d2 = df1'*s; + if d2 > 0 % new slope must be negative + s = -df1; % otherwise use steepest direction + d2 = -s'*s; + end + z1 = z1 * min(RATIO, d1/(d2-realmin)); % slope ratio but max RATIO + d1 = d2; + ls_failed = 0; % this line search did not fail + else + X = X0; f1 = f0; df1 = df0; % restore point from before failed line search + if ls_failed | i > abs(length) % line search failed twice in a row + break; % or we ran out of time, so we give up + end + tmp = df1; df1 = df2; df2 = tmp; % swap derivatives + s = -df1; % try steepest + d1 = -s'*s; + z1 = 1/(1-d1); + ls_failed = 1; % this line search failed + end + if exist('OCTAVE_VERSION') + fflush(stdout); + end +end +fprintf('\n'); diff --git a/ex5/learningCurve.m b/ex5/learningCurve.m new file mode 100644 index 0000000..6ea4333 --- /dev/null +++ b/ex5/learningCurve.m @@ -0,0 +1,66 @@ +function [error_train, error_val] = ... + learningCurve(X, y, Xval, yval, lambda) +%LEARNINGCURVE Generates the train and cross validation set errors needed +%to plot a learning curve +% [error_train, error_val] = ... +% LEARNINGCURVE(X, y, Xval, yval, lambda) returns the train and +% cross validation set errors for a learning curve. In particular, +% it returns two vectors of the same length - error_train and +% error_val. Then, error_train(i) contains the training error for +% i examples (and similarly for error_val(i)). +% +% In this function, you will compute the train and test errors for +% dataset sizes from 1 up to m. In practice, when working with larger +% datasets, you might want to do this in larger intervals. +% + +% Number of training examples +m = size(X, 1); + +% You need to return these values correctly +error_train = zeros(m, 1); +error_val = zeros(m, 1); + +% ====================== YOUR CODE HERE ====================== +% Instructions: Fill in this function to return training errors in +% error_train and the cross validation errors in error_val. +% i.e., error_train(i) and +% error_val(i) should give you the errors +% obtained after training on i examples. +% +% Note: You should evaluate the training error on the first i training +% examples (i.e., X(1:i, :) and y(1:i)). +% +% For the cross-validation error, you should instead evaluate on +% the _entire_ cross validation set (Xval and yval). +% +% Note: If you are using your cost function (linearRegCostFunction) +% to compute the training and cross validation error, you should +% call the function with the lambda argument set to 0. +% Do note that you will still need to use lambda when running +% the training to obtain the theta parameters. +% +% Hint: You can loop over the examples with the following: +% +% for i = 1:m +% % Compute train/cross validation errors using training examples +% % X(1:i, :) and y(1:i), storing the result in +% % error_train(i) and error_val(i) +% .... +% +% end +% + +% ---------------------- Sample Solution ---------------------- + + + + + + + +% ------------------------------------------------------------- + +% ========================================================================= + +end diff --git a/ex5/linearRegCostFunction.m b/ex5/linearRegCostFunction.m new file mode 100644 index 0000000..6addf6b --- /dev/null +++ b/ex5/linearRegCostFunction.m @@ -0,0 +1,37 @@ +function [J, grad] = linearRegCostFunction(X, y, theta, lambda) +%LINEARREGCOSTFUNCTION Compute cost and gradient for regularized linear +%regression with multiple variables +% [J, grad] = LINEARREGCOSTFUNCTION(X, y, theta, lambda) computes the +% cost of using theta as the parameter for linear regression to fit the +% data points in X and y. Returns the cost in J and the gradient in grad + +% Initialize some useful values +m = length(y); % number of training examples + +% You need to return the following variables correctly +J = 0; +grad = zeros(size(theta)); + +% ====================== YOUR CODE HERE ====================== +% Instructions: Compute the cost and gradient of regularized linear +% regression for a particular choice of theta. +% +% You should set J to the cost and grad to the gradient. +% + + + + + + + + + + + + +% ========================================================================= + +grad = grad(:); + +end diff --git a/ex5/plotFit.m b/ex5/plotFit.m new file mode 100644 index 0000000..8dba7cf --- /dev/null +++ b/ex5/plotFit.m @@ -0,0 +1,28 @@ +function plotFit(min_x, max_x, mu, sigma, theta, p) +%PLOTFIT Plots a learned polynomial regression fit over an existing figure. +%Also works with linear regression. +% PLOTFIT(min_x, max_x, mu, sigma, theta, p) plots the learned polynomial +% fit with power p and feature normalization (mu, sigma). + +% Hold on to the current figure +hold on; + +% We plot a range slightly bigger than the min and max values to get +% an idea of how the fit will vary outside the range of the data points +x = (min_x - 15: 0.05 : max_x + 25)'; + +% Map the X values +X_poly = polyFeatures(x, p); +X_poly = bsxfun(@minus, X_poly, mu); +X_poly = bsxfun(@rdivide, X_poly, sigma); + +% Add ones +X_poly = [ones(size(x, 1), 1) X_poly]; + +% Plot +plot(x, X_poly * theta, '--', 'LineWidth', 2) + +% Hold off to the current figure +hold off + +end diff --git a/ex5/polyFeatures.m b/ex5/polyFeatures.m new file mode 100644 index 0000000..f496f48 --- /dev/null +++ b/ex5/polyFeatures.m @@ -0,0 +1,25 @@ +function [X_poly] = polyFeatures(X, p) +%POLYFEATURES Maps X (1D vector) into the p-th power +% [X_poly] = POLYFEATURES(X, p) takes a data matrix X (size m x 1) and +% maps each example into its polynomial features where +% X_poly(i, :) = [X(i) X(i).^2 X(i).^3 ... X(i).^p]; +% + + +% You need to return the following variables correctly. +X_poly = zeros(numel(X), p); + +% ====================== YOUR CODE HERE ====================== +% Instructions: Given a vector X, return a matrix X_poly where the p-th +% column of X contains the values of X to the p-th power. +% +% + + + + + + +% ========================================================================= + +end diff --git a/ex5/submit.m b/ex5/submit.m new file mode 100644 index 0000000..1684fc2 --- /dev/null +++ b/ex5/submit.m @@ -0,0 +1,577 @@ +function submit(partId, webSubmit) +%SUBMIT Submit your code and output to the ml-class servers +% SUBMIT() will connect to the ml-class server and submit your solution + + fprintf('==\n== [ml-class] Submitting Solutions | Programming Exercise %s\n==\n', ... + homework_id()); + if ~exist('partId', 'var') || isempty(partId) + partId = promptPart(); + end + + if ~exist('webSubmit', 'var') || isempty(webSubmit) + webSubmit = 0; % submit directly by default + end + + % Check valid partId + partNames = validParts(); + if ~isValidPartId(partId) + fprintf('!! Invalid homework part selected.\n'); + fprintf('!! Expected an integer from 1 to %d.\n', numel(partNames) + 1); + fprintf('!! Submission Cancelled\n'); + return + end + + if ~exist('ml_login_data.mat','file') + [login password] = loginPrompt(); + save('ml_login_data.mat','login','password'); + else + load('ml_login_data.mat'); + [login password] = quickLogin(login, password); + save('ml_login_data.mat','login','password'); + end + + if isempty(login) + fprintf('!! Submission Cancelled\n'); + return + end + + fprintf('\n== Connecting to ml-class ... '); + if exist('OCTAVE_VERSION') + fflush(stdout); + end + + % Setup submit list + if partId == numel(partNames) + 1 + submitParts = 1:numel(partNames); + else + submitParts = [partId]; + end + + for s = 1:numel(submitParts) + thisPartId = submitParts(s); + if (~webSubmit) % submit directly to server + [login, ch, signature, auxstring] = getChallenge(login, thisPartId); + if isempty(login) || isempty(ch) || isempty(signature) + % Some error occured, error string in first return element. + fprintf('\n!! Error: %s\n\n', login); + return + end + + % Attempt Submission with Challenge + ch_resp = challengeResponse(login, password, ch); + + [result, str] = submitSolution(login, ch_resp, thisPartId, ... + output(thisPartId, auxstring), source(thisPartId), signature); + + partName = partNames{thisPartId}; + + fprintf('\n== [ml-class] Submitted Assignment %s - Part %d - %s\n', ... + homework_id(), thisPartId, partName); + fprintf('== %s\n', strtrim(str)); + + if exist('OCTAVE_VERSION') + fflush(stdout); + end + else + [result] = submitSolutionWeb(login, thisPartId, output(thisPartId), ... + source(thisPartId)); + result = base64encode(result); + + fprintf('\nSave as submission file [submit_ex%s_part%d.txt (enter to accept default)]:', ... + homework_id(), thisPartId); + saveAsFile = input('', 's'); + if (isempty(saveAsFile)) + saveAsFile = sprintf('submit_ex%s_part%d.txt', homework_id(), thisPartId); + end + + fid = fopen(saveAsFile, 'w'); + if (fid) + fwrite(fid, result); + fclose(fid); + fprintf('\nSaved your solutions to %s.\n\n', saveAsFile); + fprintf(['You can now submit your solutions through the web \n' ... + 'form in the programming exercises. Select the corresponding \n' ... + 'programming exercise to access the form.\n']); + + else + fprintf('Unable to save to %s\n\n', saveAsFile); + fprintf(['You can create a submission file by saving the \n' ... + 'following text in a file: (press enter to continue)\n\n']); + pause; + fprintf(result); + end + end + end +end + +% ================== CONFIGURABLES FOR EACH HOMEWORK ================== + +function id = homework_id() + id = '5'; +end + +function [partNames] = validParts() + partNames = { 'Regularized Linear Regression Cost Function', ... + 'Regularized Linear Regression Gradient', ... + 'Learning Curve', ... + 'Polynomial Feature Mapping' ... + 'Validation Curve' ... + }; +end + +function srcs = sources() + % Separated by part + srcs = { { 'linearRegCostFunction.m' }, ... + { 'linearRegCostFunction.m' }, ... + { 'learningCurve.m' }, ... + { 'polyFeatures.m' }, ... + { 'validationCurve.m' } }; +end + +function out = output(partId, auxstring) + % Random Test Cases + X = [ones(10,1) sin(1:1.5:15)' cos(1:1.5:15)']; + y = sin(1:3:30)'; + Xval = [ones(10,1) sin(0:1.5:14)' cos(0:1.5:14)']; + yval = sin(1:10)'; + if partId == 1 + [J] = linearRegCostFunction(X, y, [0.1 0.2 0.3]', 0.5); + out = sprintf('%0.5f ', J); + elseif partId == 2 + [J, grad] = linearRegCostFunction(X, y, [0.1 0.2 0.3]', 0.5); + out = sprintf('%0.5f ', grad); + elseif partId == 3 + [error_train, error_val] = ... + learningCurve(X, y, Xval, yval, 1); + out = sprintf('%0.5f ', [error_train(:); error_val(:)]); + elseif partId == 4 + [X_poly] = polyFeatures(X(2,:)', 8); + out = sprintf('%0.5f ', X_poly); + elseif partId == 5 + [lambda_vec, error_train, error_val] = ... + validationCurve(X, y, Xval, yval); + out = sprintf('%0.5f ', ... + [lambda_vec(:); error_train(:); error_val(:)]); + end +end + +% ====================== SERVER CONFIGURATION =========================== + +% ***************** REMOVE -staging WHEN YOU DEPLOY ********************* +function url = site_url() + url = 'http://class.coursera.org/ml-007'; +end + +function url = challenge_url() + url = [site_url() '/assignment/challenge']; +end + +function url = submit_url() + url = [site_url() '/assignment/submit']; +end + +% ========================= CHALLENGE HELPERS ========================= + +function src = source(partId) + src = ''; + src_files = sources(); + if partId <= numel(src_files) + flist = src_files{partId}; + for i = 1:numel(flist) + fid = fopen(flist{i}); + if (fid == -1) + error('Error opening %s (is it missing?)', flist{i}); + end + line = fgets(fid); + while ischar(line) + src = [src line]; + line = fgets(fid); + end + fclose(fid); + src = [src '||||||||']; + end + end +end + +function ret = isValidPartId(partId) + partNames = validParts(); + ret = (~isempty(partId)) && (partId >= 1) && (partId <= numel(partNames) + 1); +end + +function partId = promptPart() + fprintf('== Select which part(s) to submit:\n'); + partNames = validParts(); + srcFiles = sources(); + for i = 1:numel(partNames) + fprintf('== %d) %s [', i, partNames{i}); + fprintf(' %s ', srcFiles{i}{:}); + fprintf(']\n'); + end + fprintf('== %d) All of the above \n==\nEnter your choice [1-%d]: ', ... + numel(partNames) + 1, numel(partNames) + 1); + selPart = input('', 's'); + partId = str2num(selPart); + if ~isValidPartId(partId) + partId = -1; + end +end + +function [email,ch,signature,auxstring] = getChallenge(email, part) + str = urlread(challenge_url(), 'post', {'email_address', email, 'assignment_part_sid', [homework_id() '-' num2str(part)], 'response_encoding', 'delim'}); + + str = strtrim(str); + r = struct; + while(numel(str) > 0) + [f, str] = strtok (str, '|'); + [v, str] = strtok (str, '|'); + r = setfield(r, f, v); + end + + email = getfield(r, 'email_address'); + ch = getfield(r, 'challenge_key'); + signature = getfield(r, 'state'); + auxstring = getfield(r, 'challenge_aux_data'); +end + +function [result, str] = submitSolutionWeb(email, part, output, source) + + result = ['{"assignment_part_sid":"' base64encode([homework_id() '-' num2str(part)], '') '",' ... + '"email_address":"' base64encode(email, '') '",' ... + '"submission":"' base64encode(output, '') '",' ... + '"submission_aux":"' base64encode(source, '') '"' ... + '}']; + str = 'Web-submission'; +end + +function [result, str] = submitSolution(email, ch_resp, part, output, ... + source, signature) + + params = {'assignment_part_sid', [homework_id() '-' num2str(part)], ... + 'email_address', email, ... + 'submission', base64encode(output, ''), ... + 'submission_aux', base64encode(source, ''), ... + 'challenge_response', ch_resp, ... + 'state', signature}; + + str = urlread(submit_url(), 'post', params); + + % Parse str to read for success / failure + result = 0; + +end + +% =========================== LOGIN HELPERS =========================== + +function [login password] = loginPrompt() + % Prompt for password + [login password] = basicPrompt(); + + if isempty(login) || isempty(password) + login = []; password = []; + end +end + + +function [login password] = basicPrompt() + login = input('Login (Email address): ', 's'); + password = input('Password: ', 's'); +end + +function [login password] = quickLogin(login,password) + disp(['You are currently logged in as ' login '.']); + cont_token = input('Is this you? (y/n - type n to reenter password)','s'); + if(isempty(cont_token) || cont_token(1)=='Y'||cont_token(1)=='y') + return; + else + [login password] = loginPrompt(); + end +end + +function [str] = challengeResponse(email, passwd, challenge) + str = sha1([challenge passwd]); +end + +% =============================== SHA-1 ================================ + +function hash = sha1(str) + + % Initialize variables + h0 = uint32(1732584193); + h1 = uint32(4023233417); + h2 = uint32(2562383102); + h3 = uint32(271733878); + h4 = uint32(3285377520); + + % Convert to word array + strlen = numel(str); + + % Break string into chars and append the bit 1 to the message + mC = [double(str) 128]; + mC = [mC zeros(1, 4-mod(numel(mC), 4), 'uint8')]; + + numB = strlen * 8; + if exist('idivide') + numC = idivide(uint32(numB + 65), 512, 'ceil'); + else + numC = ceil(double(numB + 65)/512); + end + numW = numC * 16; + mW = zeros(numW, 1, 'uint32'); + + idx = 1; + for i = 1:4:strlen + 1 + mW(idx) = bitor(bitor(bitor( ... + bitshift(uint32(mC(i)), 24), ... + bitshift(uint32(mC(i+1)), 16)), ... + bitshift(uint32(mC(i+2)), 8)), ... + uint32(mC(i+3))); + idx = idx + 1; + end + + % Append length of message + mW(numW - 1) = uint32(bitshift(uint64(numB), -32)); + mW(numW) = uint32(bitshift(bitshift(uint64(numB), 32), -32)); + + % Process the message in successive 512-bit chs + for cId = 1 : double(numC) + cSt = (cId - 1) * 16 + 1; + cEnd = cId * 16; + ch = mW(cSt : cEnd); + + % Extend the sixteen 32-bit words into eighty 32-bit words + for j = 17 : 80 + ch(j) = ch(j - 3); + ch(j) = bitxor(ch(j), ch(j - 8)); + ch(j) = bitxor(ch(j), ch(j - 14)); + ch(j) = bitxor(ch(j), ch(j - 16)); + ch(j) = bitrotate(ch(j), 1); + end + + % Initialize hash value for this ch + a = h0; + b = h1; + c = h2; + d = h3; + e = h4; + + % Main loop + for i = 1 : 80 + if(i >= 1 && i <= 20) + f = bitor(bitand(b, c), bitand(bitcmp(b), d)); + k = uint32(1518500249); + elseif(i >= 21 && i <= 40) + f = bitxor(bitxor(b, c), d); + k = uint32(1859775393); + elseif(i >= 41 && i <= 60) + f = bitor(bitor(bitand(b, c), bitand(b, d)), bitand(c, d)); + k = uint32(2400959708); + elseif(i >= 61 && i <= 80) + f = bitxor(bitxor(b, c), d); + k = uint32(3395469782); + end + + t = bitrotate(a, 5); + t = bitadd(t, f); + t = bitadd(t, e); + t = bitadd(t, k); + t = bitadd(t, ch(i)); + e = d; + d = c; + c = bitrotate(b, 30); + b = a; + a = t; + + end + h0 = bitadd(h0, a); + h1 = bitadd(h1, b); + h2 = bitadd(h2, c); + h3 = bitadd(h3, d); + h4 = bitadd(h4, e); + + end + + hash = reshape(dec2hex(double([h0 h1 h2 h3 h4]), 8)', [1 40]); + + hash = lower(hash); + +end + +function ret = bitadd(iA, iB) + ret = double(iA) + double(iB); + ret = bitset(ret, 33, 0); + ret = uint32(ret); +end + +function ret = bitrotate(iA, places) + t = bitshift(iA, places - 32); + ret = bitshift(iA, places); + ret = bitor(ret, t); +end + +% =========================== Base64 Encoder ============================ +% Thanks to Peter John Acklam +% + +function y = base64encode(x, eol) +%BASE64ENCODE Perform base64 encoding on a string. +% +% BASE64ENCODE(STR, EOL) encode the given string STR. EOL is the line ending +% sequence to use; it is optional and defaults to '\n' (ASCII decimal 10). +% The returned encoded string is broken into lines of no more than 76 +% characters each, and each line will end with EOL unless it is empty. Let +% EOL be empty if you do not want the encoded string broken into lines. +% +% STR and EOL don't have to be strings (i.e., char arrays). The only +% requirement is that they are vectors containing values in the range 0-255. +% +% This function may be used to encode strings into the Base64 encoding +% specified in RFC 2045 - MIME (Multipurpose Internet Mail Extensions). The +% Base64 encoding is designed to represent arbitrary sequences of octets in a +% form that need not be humanly readable. A 65-character subset +% ([A-Za-z0-9+/=]) of US-ASCII is used, enabling 6 bits to be represented per +% printable character. +% +% Examples +% -------- +% +% If you want to encode a large file, you should encode it in chunks that are +% a multiple of 57 bytes. This ensures that the base64 lines line up and +% that you do not end up with padding in the middle. 57 bytes of data fills +% one complete base64 line (76 == 57*4/3): +% +% If ifid and ofid are two file identifiers opened for reading and writing, +% respectively, then you can base64 encode the data with +% +% while ~feof(ifid) +% fwrite(ofid, base64encode(fread(ifid, 60*57))); +% end +% +% or, if you have enough memory, +% +% fwrite(ofid, base64encode(fread(ifid))); +% +% See also BASE64DECODE. + +% Author: Peter John Acklam +% Time-stamp: 2004-02-03 21:36:56 +0100 +% E-mail: pjacklam@online.no +% URL: http://home.online.no/~pjacklam + + if isnumeric(x) + x = num2str(x); + end + + % make sure we have the EOL value + if nargin < 2 + eol = sprintf('\n'); + else + if sum(size(eol) > 1) > 1 + error('EOL must be a vector.'); + end + if any(eol(:) > 255) + error('EOL can not contain values larger than 255.'); + end + end + + if sum(size(x) > 1) > 1 + error('STR must be a vector.'); + end + + x = uint8(x); + eol = uint8(eol); + + ndbytes = length(x); % number of decoded bytes + nchunks = ceil(ndbytes / 3); % number of chunks/groups + nebytes = 4 * nchunks; % number of encoded bytes + + % add padding if necessary, to make the length of x a multiple of 3 + if rem(ndbytes, 3) + x(end+1 : 3*nchunks) = 0; + end + + x = reshape(x, [3, nchunks]); % reshape the data + y = repmat(uint8(0), 4, nchunks); % for the encoded data + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Split up every 3 bytes into 4 pieces + % + % aaaaaabb bbbbcccc ccdddddd + % + % to form + % + % 00aaaaaa 00bbbbbb 00cccccc 00dddddd + % + y(1,:) = bitshift(x(1,:), -2); % 6 highest bits of x(1,:) + + y(2,:) = bitshift(bitand(x(1,:), 3), 4); % 2 lowest bits of x(1,:) + y(2,:) = bitor(y(2,:), bitshift(x(2,:), -4)); % 4 highest bits of x(2,:) + + y(3,:) = bitshift(bitand(x(2,:), 15), 2); % 4 lowest bits of x(2,:) + y(3,:) = bitor(y(3,:), bitshift(x(3,:), -6)); % 2 highest bits of x(3,:) + + y(4,:) = bitand(x(3,:), 63); % 6 lowest bits of x(3,:) + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Now perform the following mapping + % + % 0 - 25 -> A-Z + % 26 - 51 -> a-z + % 52 - 61 -> 0-9 + % 62 -> + + % 63 -> / + % + % We could use a mapping vector like + % + % ['A':'Z', 'a':'z', '0':'9', '+/'] + % + % but that would require an index vector of class double. + % + z = repmat(uint8(0), size(y)); + i = y <= 25; z(i) = 'A' + double(y(i)); + i = 26 <= y & y <= 51; z(i) = 'a' - 26 + double(y(i)); + i = 52 <= y & y <= 61; z(i) = '0' - 52 + double(y(i)); + i = y == 62; z(i) = '+'; + i = y == 63; z(i) = '/'; + y = z; + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Add padding if necessary. + % + npbytes = 3 * nchunks - ndbytes; % number of padding bytes + if npbytes + y(end-npbytes+1 : end) = '='; % '=' is used for padding + end + + if isempty(eol) + + % reshape to a row vector + y = reshape(y, [1, nebytes]); + + else + + nlines = ceil(nebytes / 76); % number of lines + neolbytes = length(eol); % number of bytes in eol string + + % pad data so it becomes a multiple of 76 elements + y = [y(:) ; zeros(76 * nlines - numel(y), 1)]; + y(nebytes + 1 : 76 * nlines) = 0; + y = reshape(y, 76, nlines); + + % insert eol strings + eol = eol(:); + y(end + 1 : end + neolbytes, :) = eol(:, ones(1, nlines)); + + % remove padding, but keep the last eol string + m = nebytes + neolbytes * (nlines - 1); + n = (76+neolbytes)*nlines - neolbytes; + y(m+1 : n) = ''; + + % extract and reshape to row vector + y = reshape(y, 1, m+neolbytes); + + end + + % output is a character array + y = char(y); + +end diff --git a/ex5/submitWeb.m b/ex5/submitWeb.m new file mode 100644 index 0000000..e429365 --- /dev/null +++ b/ex5/submitWeb.m @@ -0,0 +1,20 @@ +% submitWeb Creates files from your code and output for web submission. +% +% If the submit function does not work for you, use the web-submission mechanism. +% Call this function to produce a file for the part you wish to submit. Then, +% submit the file to the class servers using the "Web Submission" button on the +% Programming Exercises page on the course website. +% +% You should call this function without arguments (submitWeb), to receive +% an interactive prompt for submission; optionally you can call it with the partID +% if you so wish. Make sure your working directory is set to the directory +% containing the submitWeb.m file and your assignment files. + +function submitWeb(partId) + if ~exist('partId', 'var') || isempty(partId) + partId = []; + end + + submit(partId, 1); +end + diff --git a/ex5/trainLinearReg.m b/ex5/trainLinearReg.m new file mode 100644 index 0000000..eb89860 --- /dev/null +++ b/ex5/trainLinearReg.m @@ -0,0 +1,21 @@ +function [theta] = trainLinearReg(X, y, lambda) +%TRAINLINEARREG Trains linear regression given a dataset (X, y) and a +%regularization parameter lambda +% [theta] = TRAINLINEARREG (X, y, lambda) trains linear regression using +% the dataset (X, y) and regularization parameter lambda. Returns the +% trained parameters theta. +% + +% Initialize Theta +initial_theta = zeros(size(X, 2), 1); + +% Create "short hand" for the cost function to be minimized +costFunction = @(t) linearRegCostFunction(X, y, t, lambda); + +% Now, costFunction is a function that takes in only one argument +options = optimset('MaxIter', 200, 'GradObj', 'on'); + +% Minimize using fmincg +theta = fmincg(costFunction, initial_theta, options); + +end diff --git a/ex5/validationCurve.m b/ex5/validationCurve.m new file mode 100644 index 0000000..24b56bc --- /dev/null +++ b/ex5/validationCurve.m @@ -0,0 +1,53 @@ +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]'; + +% 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 +% +% + + + + + + + + + + +% ========================================================================= + +end