代码和作业说明下载
这次作业我们需要实现 Regularized Linear Regression and Bias v.s.
Variance。
需要完成下列代码文件:
- linearRegCostFunction.m
- learningCurve.m
- polyFeatures.m
- validationCurve.m
linearRegCostFunction.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| function [J, grad] = linearRegCostFunction(X, y, theta, lambda) m = length(y); J = 0; grad = zeros(size(theta)); J = (1 / (2 * m)) * sum((X * theta - y).^2) + (lambda / (2 * m)) * sum(theta(2 : end).^2); grad = (1 / m) .* (X' * (X * theta - y)) + (lambda / m) * [0; theta(2 : end)]; grad = grad(:); end
|
learningCurve.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| function [error_train, error_val] = ... learningCurve(X, y, Xval, yval, lambda) m = size(X, 1); error_train = zeros(m, 1); error_val = zeros(m, 1); 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); end end
|
polyFeatures.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| function [X_poly] = polyFeatures(X, p) X_poly = zeros(numel(X), p); for i = 1 : p X_poly(:, i) = X.^i; end end
|
validationCurve.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| function [lambda_vec, error_train, error_val] = ... validationCurve(X, y, Xval, yval) lambda_vec = [0 0.001 0.003 0.01 0.03 0.1 0.3 1 3 10]'; error_train = zeros(length(lambda_vec), 1); error_val = zeros(length(lambda_vec), 1); for i = 1 : length(lambda_vec) [theta] = trainLinearReg(X, y, lambda_vec(i)); error_train(i) = linearRegCostFunction(X, y, theta, 0); error_val(i) = linearRegCostFunction(Xval, yval, theta, 0); end end
|