From a1fda7be43b388c08166180706e44f986e68eb0e Mon Sep 17 00:00:00 2001 From: mjjo53 Date: Sun, 28 May 2017 20:20:47 +0900 Subject: [PATCH] =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ex5/ex5.m | 10 +++++++++- ex5/learningCurve.m | 8 +++++--- ex5/linearRegCostFunction.m | 5 +++-- ex5/polyFeatures.m | 6 ++---- ex5/token.mat | 15 +++++++++++++++ ex5/validationCurve.m | 14 +++++++------- 6 files changed, 41 insertions(+), 17 deletions(-) create mode 100644 ex5/token.mat diff --git a/ex5/ex5.m b/ex5/ex5.m index be31c64..55f8349 100644 --- a/ex5/ex5.m +++ b/ex5/ex5.m @@ -164,7 +164,7 @@ pause; % lambda to see how the fit and learning curve change. % -lambda = 0; +lambda = 3; [theta] = trainLinearReg(X_poly, y, lambda); % Plot training data and fit @@ -218,3 +218,11 @@ end fprintf('Program paused. Press enter to continue.\n'); pause; + + + +%% Computing test set error +lambda = 3; +[theta] = trainLinearReg(X_poly, y, lambda); +testSetError = linearRegCostFunction(X_poly_test, ytest, theta, 0); +fprintf('#Test Set Error for lambda(%f) : %f\n', lambda, testSetError); diff --git a/ex5/learningCurve.m b/ex5/learningCurve.m index 6ea4333..cd0cfe4 100644 --- a/ex5/learningCurve.m +++ b/ex5/learningCurve.m @@ -53,11 +53,13 @@ error_val = zeros(m, 1); % ---------------------- Sample Solution ---------------------- +for i = 1:m + [theta] = trainLinearReg(X(1:i, :), y(1:i), lambda); + error_train(i) = linearRegCostFunction(X(1:i, :), y(1:i), theta, 0); + error_val(i) = linearRegCostFunction(Xval, yval, theta, 0); - - - +endfor % ------------------------------------------------------------- diff --git a/ex5/linearRegCostFunction.m b/ex5/linearRegCostFunction.m index 6addf6b..ff7c291 100644 --- a/ex5/linearRegCostFunction.m +++ b/ex5/linearRegCostFunction.m @@ -21,8 +21,9 @@ grad = zeros(size(theta)); - - +hx = X*theta; +J = sum((hx - y).**2)/(2*m) + lambda*sum((theta(2:end).**2))/(2*m); +grad = (sum((hx-y).*X)/m)' + lambda*[0; theta(2:end)]/m; diff --git a/ex5/polyFeatures.m b/ex5/polyFeatures.m index f496f48..db1584b 100644 --- a/ex5/polyFeatures.m +++ b/ex5/polyFeatures.m @@ -15,10 +15,8 @@ X_poly = zeros(numel(X), p); % % - - - - +for i = 1:p + X_poly(:, i) = X.^i; % ========================================================================= diff --git a/ex5/token.mat b/ex5/token.mat new file mode 100644 index 0000000..af15e7b --- /dev/null +++ b/ex5/token.mat @@ -0,0 +1,15 @@ +# Created by Octave 4.2.1, Sun May 28 20:19:23 2017 GMT +# name: email +# type: sq_string +# elements: 1 +# length: 16 +mjjo53@gmail.com + + +# name: token +# type: sq_string +# elements: 1 +# length: 16 +9vAaPE4tKr9tF716 + + diff --git a/ex5/validationCurve.m b/ex5/validationCurve.m index 24b56bc..d958ec0 100644 --- a/ex5/validationCurve.m +++ b/ex5/validationCurve.m @@ -39,14 +39,14 @@ error_val = zeros(length(lambda_vec), 1); % % +for i = 1:length(lambda_vec) + + lambda = lambda_vec(i); + [theta] = trainLinearReg(X, y, lambda); + error_train(i) = linearRegCostFunction(X, y, theta, 0); + error_val(i) = linearRegCostFunction(Xval, yval, theta, 0); - - - - - - - +endfor % =========================================================================