Logistic regression
目的:建立一个逻辑回归模型用来预测一个是否能够被大学录取
问题描述:假如你是一个administrator,现要根据学生的两次成绩来决定他们是否有资格被录取。
早先被录取学生的数据作为training set。每一个training sample:每个学生的两个考试成绩和录取结果。
步骤:
(1)可视化过去所有学生的两次成绩分布:
pos = find(y==1);
neg = find(y==0);
plot(X(pos,1),X(pos,2),'k+','LineWidth',2,'MarkerSize',7);
hold on;
plot(X(neg,1),X(neg,2),'ko','MarkerFaceColor','y','MarkerSize',7);
% Labels and Legend
xlabel('Exam 1 score')
ylabel('Exam 2 score')
% Specified in plot order
legend('Admitted', 'Not admitted')
hold off;
(2)计算cost和gradient
x=sigmoid(X*theta);
J=sum(-y.*log(x)-(1-y).*log(1-x))/m;
grad=(X'*(x-y))/m;
其中,sigmoid函数的作用是将X转换到0-1之间。(具体编程时一定要矩阵矩阵的维度问题)
g=1./(1+exp(-z));z=Theta*X;
(3)梯度下降法优化算法
options = optimset('GradObj', 'on', 'MaxIter', 400);%设置迭代次数
[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
(4)当一个新的X进来时,做预测:
g>0.5时,p=1.