代码和作业说明下载
这次作业,我们需要实现一个 Logistic Regression。
需要完成下列的代码文件:
- plotData.m
- sigmoid.m
- costFunction.m
- predict.m
- costFunctionReg.m
plotData.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
| function plotData(X, y) figure; hold on; pos = find(y == 1); neg = find(y == 0); plot(X(pos, 1), X(pos, 2), 'k+', 'LineWidth', 2, 'MarkerSize', 7); plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y', 'MarkerSize', 7); hold off; end
|
sigmoid.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| function g = sigmoid(z) g = zeros(size(z)); g = 1 ./ (1 + e .^ (-1 .* z)); end
|
costFunction.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
| function [J, grad] = costFunction(theta, X, y) m = length(y); J = 0; grad = zeros(size(theta)); J = sum(-y.*log(sigmoid(X*theta))-(1-y).*log(1-sigmoid(X*theta)))/m; grad = (X' * (sigmoid(X*theta) - y))./m; end
|
predict.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 p = predict(theta, X) m = size(X, 1); p = zeros(m, 1); p = sigmoid(X*theta) >= 0.5; end
|
costFunctionReg.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] = costFunctionReg(theta, X, y, lambda) m = length(y); J = 0; grad = zeros(size(theta)); col = size(X, 2); J = sum(-y.*log(sigmoid(X*theta))-(1-y).*log(1-sigmoid(X*theta)))/m + ... lambda.*(theta(2:col)'*theta(2:col))./(2*m); grad(1) = (X(:,1)' * (sigmoid(X*theta) - y))./m grad(2:col) = (X(:,2:col)' * (sigmoid(X*theta) - y))./m + (lambda/m).*theta(2:col); end
|