【课程学习】Machine Learning 第三周
Week 3
PROGRAMMING
Logistic Regression
Visualizing the data
这一段可以自己写,但是在pdf中也有直接的代码可以添加在plotdata.m中:
% Find Indices of Positive and Negative Examples
pos = find(y==1); neg = find(y == 0);
% Plot Examples
plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, 'MarkerSize', 7);
plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y', 'MarkerSize', 7);
Sigmoid Function
根据公式可以直接求出。注意是点除,不是直接的相除。
g=1./(1+exp(-z));
Cost function and gradient
根据公式,在costFunction.m中添加以下代码:
J=1/m*(-y'*log(sigmoid(X*theta))-(1-y)'*log(1-sigmoid(X*theta)));
grad=1/m*((sigmoid(X*theta)-y)'*X);
Evaluating logistic regression
这个就是根据结果判断是0还是1了,在predict.m中添加以下代码:
h=sigmoid(X*theta);
p(find(h<0.5))=0;
p(find(h>=0.5))=1;
Regularized logistic regression
Cost function and gradient
在原先的基础上添加一个正则项,matlab下标从1开始,这个问题让我找了半天的bug,在costFunctionReg.m中添加以下代码:
J=1/m*(-y'*log(sigmoid(X*theta))-(1-y)'*log(1-sigmoid(X*theta)))+lambda/2/m*(theta(2:end)'*theta(2:end));
grad=1/m*((sigmoid(X*theta)-y)'*X);
grad(2:end)=grad(2:end)+lambda/m*theta(2:end)';