在第二次的练习中,我们将讨论逻辑回归的问题来预测一个学生能否被一个学校接收!
一、逻辑回归
题目描述:假如你是一个学校的校长,你需要判断每一个申请者能否被接收,依据的是两次的考试成绩。你有的是之前的申请者的数据来作为逻辑回归的训练集,对于每一个训练实例,你都有他的两门考试的成绩和他是否被接收了!你的任务就是建立一个分类模型,决定申请者被接收的概率?
(1)可视化数据
在ex2.m里面已经完成了如何获取数据的部分,你需要完成在plotData.m里面的内容来绘制一个2Dplot,要求横轴是考试1的成绩,纵轴是考试二的成绩,+表示被录取,黄色圆表示没有被录取。
ex2.m:
data = load('ex2data1.txt');
X = data(:, [1, 2]); y = data(:, 3);
plorData.m:
pos = find(y==1);
neg = find(y==0);
plot(X(pos,1),X(pos,2),'k+','LineWidth',2,'MarkerSize',7);%X(pos,1)表示取得pos那些行,第一列的元素,输出一个数组!k表示边界是黑色的
plot(X(neg,1),X(neg,2),'ko','MarkerFaceColor','y','MarkerSize',7);%y表示标记面部颜色是黄色的
本来其实设置x和y轴标签和设置提示legend都可以卸载plotData.m里面,但是这里ex2.m里面写了,所以我们就省去了这个步骤了
ex2.m:
% Put some labels
hold on;
% Labels and Legend
xlabel('Exam 1 score')
ylabel('Exam 2 score')
% Specified in plot order
legend('Admitted', 'Not admitted')
hold off;
(2)implementation
step1:完成sigmoid函数(要求你完成的sigmoid函数必须不仅能够计算scalar标量,还可以计算矩阵和向量上的每一个元素)
假设函数:
g = zeros(size(z));
g = 1./(1+exp(-z));
step2:代价函数和梯度下降
代价函数:
梯度(即每个参数的求导):