Prechádzať zdrojové kódy

2018/11/20 code updates

Larry Chan 7 rokov pred
rodič
commit
25da4ffc89

+ 7 - 0
machine learning/machine-learning-ex5/ex5/learningCurve.m

@@ -53,6 +53,13 @@ error_val   = zeros(m, 1);
 
 % ---------------------- Sample Solution ----------------------
 
+for i = 1:m
+  X_train = X(1:i,:);
+  y_train = y(1:i,:);
+  theta = trainLinearReg(X_train, y_train, lambda);  
+  [error_train(i,:), grad] = mylinearRegCostFunction(X_train, y_train, theta, lambda);
+  [error_val(i,:), grad] = mylinearRegCostFunction(Xval, yval, theta, lambda);  
+endfor
 
 
 

+ 4 - 4
machine learning/machine-learning-ex5/ex5/linearRegCostFunction.m

@@ -18,12 +18,12 @@ grad = zeros(size(theta));
 %
 %               You should set J to the cost and grad to the gradient.
 %
-h_theta = X * theta - y;
-J = 1 / (2 * m) * sum (h_theta .^2) + lambda / (2 * m) * sum(theta(2:end) .^2);
+
+J = 1 / (2 * m) * sum ((X * theta - y) .^2) + lambda / (2 * m) * sum(theta(2:end) .^2);
 
 reg = lambda / m * theta .* [0; ones(rows(theta)-1, 1)];
-reg
-grad = 1 / m * sum(X' * h_theta ) + reg;
+grad = 1 / m * X' * (X * theta - y) + reg;
+%size(grad)
 
 
 

+ 29 - 1
machine learning/machine-learning-ex5/ex5/myex5.m

@@ -2,7 +2,15 @@
 %  You should now implement the cost function for regularized linear 
 %  regression. 
 %
+% Load Training Data
+fprintf('Loading and Visualizing Data ...\n')
 
+% Load from ex5data1: 
+% You will have X, y, Xval, yval, Xtest, ytest in your environment
+load ('ex5data1.mat');
+
+% m = Number of examples
+m = size(X, 1);
 theta = [1 ; 1];
 J = linearRegCostFunction([ones(m, 1) X], y, theta, 1);
 
@@ -19,5 +27,25 @@ fprintf(['Gradient at theta = [1 ; 1]:  [%f; %f] '...
          grad(1), grad(2));
 
 fprintf('Program paused. Press enter to continue.\n');
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+lambda = 0;
+[error_train, error_val] = ...
+    learningCurve([ones(m, 1) X], y, ...
+                  [ones(size(Xval, 1), 1) Xval], yval, ...
+                  lambda);
+
+plot(1:m, error_train, 1:m, error_val);
+title('Learning curve for linear regression')
+legend('Train', 'Cross Validation')
+xlabel('Number of training examples')
+ylabel('Error')
+axis([0 13 0 150])
+
+fprintf('# Training Examples\tTrain Error\tCross Validation Error\n');
+for i = 1:m
+    fprintf('  \t%d\t\t%f\t%f\n', i, error_train(i), error_val(i));
+end
 
-
+fprintf('Program paused. Press enter to continue.\n');

+ 1 - 1
machine learning/machine-learning-ex5/ex5/token.mat

@@ -1,4 +1,4 @@
-# Created by Octave 4.2.2, Tue Nov 20 00:07:44 2018 HKT <astron@astron>
+# Created by Octave 4.4.1, Tue Nov 20 18:26:22 2018 GMT <unknown@ICC-LARRYC-D1>
 # name: email
 # type: sq_string
 # elements: 1