本文基于
Logistic Regression原理小结
完成对逻辑回归的python实现。
1.数据处理
给定数据集包含100个样本,每个样本数据包含两个特征(x1和x2),其所属类别为0或1。数据集文件保存为“dataset.txt”,其每一行代表一个样本数据,前两列表示特征x1和x2,最后一列表示该样本所属类别。
从文件中逐行读取数据,得到样本特征及其所属类别:
2.梯度下降算法求解模型参数
2.1Sigmoid函数
2.2批量梯度下降法
梯度下降与下山类似,当从初始点往下走时,为了以最快速度到达最低点,每次出发均选择当前最陡的方向往下走,当然最终到达的可能是局部最低点。
而梯度下降法又可以分为批量梯度下降、随机梯度下降以及小批量梯度下降,其中批量梯度下降使用所有样本来更新模型参数,因此在样本数据较多的情况下,训练速度比较慢;随机梯度下降每次仅用一个样本数据更新模型参数,其结果可能不是最优,且不能较快收敛到局部最优解,但是其训练速度快,计算量小;而小批量梯度下降是前面两种方法的折衷,每次选取部分样本更新模型参数。
在Logistic Regression原理小结中推导出了梯度下降法中求解逻辑回归模型参数的迭代公式:,其中a为迭代步长,X为样本数据,Y为样本数据分类结果,h为样本数据预测分类结果。
2.3随机梯度下降法
随机梯度下降每次只用一个样本数据更新模型参数对分类器进行增量式更新,便于在线学习。
3.分类结果可视化
为直观展示分类效果,绘制出样本数据及分类结果。样本数据包含x1和x2两个特征,且分为0和1两类,因此以x1为横坐标,以x2为纵坐标轴,绘制出直线XW=wx+wx1+wx2=0(x=1),即为分类边界。
绘制出使用批量梯度下降法以及随机梯度下降法的分类结果:
批量梯度下降
随机梯度下降
批量梯度下降在样本数据集上迭代600次,其分类结果相比随机梯度下降来说更为准确,但是随机梯度下降计算量小,最终模型参数也趋于稳定。
Coding Your Ambition!
长按即可订阅
领取专属 10元无门槛券
私享最新 技术干货