[Python]数据挖掘(1)、梯度降低求解逻辑回归——考核成绩分类

ps:本博客内容根据唐宇迪的的机器学习经典算法  学习视频复制总结而来

http://www.abcplus.com.cn/course/83/tasks

逻辑回归

问题描述:咱们将创建一个逻辑回归模型来预测一个学生是否被大学录取。假设你是一个大学系的管理员,你想根据两次考试的结果来决定每一个申请人的录取机会。你有之前的申请人的历史数据,你能够用它做为逻辑回归的训练集。对于每个培训例子,你有两个考试的申请人的分数和录取决定。为了作到这一点,咱们将创建一个分类模型,根据考试成绩估计入学几率。算法

数据下载:https://pan.baidu.com/s/1pNbtrjP机器学习

数据大概长这个样函数

一、查看数据基本属性

二、画图观察

plot结构剖析

上图来自https://www.jianshu.com/p/b4b5dd20e48a学习

三、创建分类器(求解出三个参数 θ0、θ一、θ2

设定阈值,根据阈值判断录取结果(此处设置为50%,≥50%即判断录取)spa

要完成的模块: 
sigmoid : 映射到几率的函数3d

    • model : 返回预测结果值code

    • cost : 根据参数计算损失视频

    • gradient : 计算每一个参数的梯度方向blog

    • descent : 进行参数更新博客

    • accuracy: 计算精度

 

  

四、损失函数 

五、计算梯度

六、梯度降低(比较三种梯度降低方法)

 

下面这段代码仅仅是将过程可视化

七、不一样的中止策略

①设定迭代次数

②根据损失值中止

上面的迭代次数过少,修改阈值为1E-6,迭代次数大概须要110000次 。会发现值再次下降

这种策略虽然准确度较高,可是迭代次数多,计算量大

③、根据梯度变化中止

设定阈值 0.05,差很少须要40 000次迭代

 

八、对比不一样的梯度降低方法

 ①Stochastic descent  随机梯度降低

 

至关不稳定,再来试试把学习率调小一些

速度快,效果和稳定性都差,须要很小的学习率

②Mini-batch descent 小批量梯度降低

 

标准化/归一化

浮动仍然比较大,咱们来尝试下对数据进行标准化 将数据按其属性(按列进行)减去其均值,而后除以其方差。最后获得的结果是,对每一个属性/每列来讲全部数据都汇集在0附近,方差值为1。

 

它好多了!原始数据,只能达到达到0.61,而咱们获得了0.38个在这里! 因此对数据作预处理是很是重要的。

 

更多的迭代次数会使得损失降低的更多!

随机梯度降低更快,可是咱们须要迭代的次数也须要更多,因此仍是用batch的比较合适!

九、精度

相关文章
相关标签/搜索