学生成绩预测模型_逻辑回归实战练习——根据学生成绩预测是否被录取

本文介绍了使用逻辑回归预测学生成绩是否被录取的实战过程,涉及数据预处理、模型建立、梯度下降策略、停止条件和模型精度计算。通过Python的pandas、numpy和matplotlib实现,探讨了全批量、随机和小批量梯度下降的性能差异,并分析了不同停止策略对模型训练的影响。
摘要由CSDN通过智能技术生成

7576a8f8e62aca591e98966cff7f5683.png

前言:

在学习了梯度下降和逻辑回归的基本算法后,选取此案例来进行实践练习,本次练习主要通过python中的三大块pandas、numpy和matplotlib来实现,基本不涉及到sklearn库的调用,一方面是自己编写公式时可以加深对推导公式的理解,另一方面也是为了复习numpy中的一些基本运算命令。

OK,Let's think !!!

本次练习所涉及到的算法理论及分析思路均参考自吴恩达老师的《机器学习》和唐宇迪老师的《机器学习实践》

研究背景:

根据两次考试的结果来决定每个申请人的录取机会。现有申请人的历史数据,我们可以用它作为逻辑回归的训练集。我们将建立一个分类模型,根据考试成绩来估计入学概率。

一、数据预处理

数据预处理的目的在于对样本数据形成初步认识,从而决定数据清晰的内容

  1. 数据预览
import 

9d5041a55a33715fff4b546a3ff727b4.png
df.head()

32691f322d7c7cf4c30f3680b9e86e87.png

从表中可以看出样本中有三行,分别是

Exam1(第一次考是成绩)
Exam2(第二次考是成绩)
Admitted(是否呗录取) 0表示不录取,1表示录取

2. 可视化预览

逻辑回归是典型的分类问题,从表中并不能直观的看出Admitted是否有明显的边界,因此可视化是个很好的方法。在可视化之前,我们先对Admitted定义新标签positive/negative

这里我是将positive和negative分别提取出来,然后画在同一个图中,当然也可以先groupby然后直接用Pandas画图:

#设定标签 
positive=df[df['Admitted']==1]    #'Admitted'==1 为正向类
negative=df[df['Admitted']==0]    #'Admitted'==0 为负向类
#可视化数据预览
fig=plt.figure(figsize=(10,6))
ax=fig.add_subplot(1,1,1)
plt.scatter(x=positive['Exam 1'],y= positive['Exam 2'],marker='x',s=50,label='positive')
plt.scatter(x=negative['Exam 1'],y= negative['Exam 2'],marker='o',s=50,label='negative')
plt.legend()
ax.set_xlabel('Exam 1')
ax.set_ylabel('Exam 2')

63e3f22b1b7e332f73fd5fc7cf847151.png

从图中可以清晰的观察到positive和negative之间存在这明显的分界线,可以通过逻辑回归来拟合出一条回归线。

二、建立模型

1. 逻辑回归模型的假设函数(hypothesis)如下:

21141aafaf53c1c5dd56dd5e267de4dc.png
#sigmoid函数
def sigmoid(z):
    return 1/(1+np.exp(-z))
#假设函数h(x)
def model(X,theta):
    return sigmoid(np.dot(X,theta.T))

这里我们需要添加一列x0(x0=1)的值,并把特征矩阵X和观测值y提取出来

#添加x0的特征值为1
df.insert(0,'ones',1)
#转化为矩阵matrix
data=df.as_matrix()
cols=data.shape[1]  #计算data的列数
X=data[:,:cols-1]
y=data[:,cols-1:cols]    #这里必须设置cols-1:cols,否则y的shape不对
#建立theta的矩阵
theta=np.zeros([1,3])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值