mirror of
https://github.com/jlengrand/MachineLearningCoursera.git
synced 2026-03-10 08:31:20 +00:00
42 lines
1.4 KiB
Matlab
42 lines
1.4 KiB
Matlab
function [J, grad] = costFunctionReg(theta, X, y, lambda)
|
|
%COSTFUNCTIONREG Compute cost and gradient for logistic regression with regularization
|
|
% J = COSTFUNCTIONREG(theta, X, y, lambda) computes the cost of using
|
|
% theta as the parameter for regularized logistic regression and the
|
|
% gradient of the cost w.r.t. to the parameters.
|
|
|
|
% 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 of a particular choice of theta.
|
|
% You should set J to the cost.
|
|
% Compute the partial derivatives and set grad to the partial
|
|
% derivatives of the cost w.r.t. each parameter in theta
|
|
|
|
% Calculating J
|
|
theta_t_x = X*theta;
|
|
h_theta = sigmoid(theta_t_x);
|
|
|
|
part_1 = -y'*log(h_theta);
|
|
part_2 = (1 - y)' * log(1 - h_theta);
|
|
part_3 = sum(theta(2:length(theta)).^2);
|
|
%part_3 = sum(theta(2:length(theta)).*theta(2:length(theta)));
|
|
|
|
J = ((1 / m) * sum(part_1 - part_2)) + ((lambda/(2*m)) * part_3);
|
|
|
|
% Calculating g
|
|
temp_1 = sigmoid(X*theta) - y;
|
|
temp_2 = repmat(temp_1, 1, size(X, 2));
|
|
|
|
theta_vector = (lambda/m) * theta;
|
|
theta_vector(1) = 0;
|
|
grad = (1/m * sum(X .* temp_2))' + theta_vector;
|
|
|
|
% =============================================================
|
|
|
|
end
|