手动实现机器学习算法-逻辑回归算法预测鸢尾花

 金诚   2018-11-23 10:32   175 人阅读  0 条评论

Python实现算法集合

这篇文章属于Python实现机器学习算法系列的文章之一:

手动实现机器学习算法-KNN算法分类鸢尾花

手动实现机器学习算法-线性回归算法预测波士顿房价

手动实现机器学习算法-Kmeans算法聚类商超肉类

手动实现机器学习算法-逻辑回归算法预测鸢尾花

正文

任务分析:

根据鸢尾花的数据,实现一个逻辑回归算法,输入测试数据,可以正确预测出鸢尾花的类型。

实现步骤:

①导入实验所需要用到的库。

②加载鸢尾花数据集,并删除不需要的Id列。同时删除重复的记录,并对鸢尾花的类别进行映射。取0与1两个类别,进行稍后的二分类。

③编写逻辑回归类,同时在类内定义初始化方法,用来对学习与迭代次数进行初始化。同时,定义sigmoid方法与训练、测试方法。

④分别提取两个类别的数据,并洗牌,然后使用pd.concat连接数据。构建训练集与测试集。然后创建逻辑回归类,进行训练与测试。

程序运行结果如下:

说明,我们预测正确了所有结果。

⑤导入可视化需要用的库。

⑥进行可视化的展示,分别显示预测值与真实值。

程序运行结果如下:

逻辑回归结果

⑦绘制目标函数的损失值,并运行,查看损失值在多少次能够收敛。

程序运行结果如下:

逻辑回归结果2

我们发现,在迭代8次后,基本就已经收敛了。

 

算法调整与改进

①尝试修改学习率与迭代次数。

②查看在不同学习率与迭代次数时,分类结果与损失值。

学习率为0.01,迭代次数为20:

逻辑回归结果

逻辑回归结果2

 

 

 

 

 

 

 

 

学习率为0.01,迭代次数200:

 

 

学习率为0.0001,迭代次数20

 

 

 

 

 

 

 

 

学习率为0.1,迭代次数20

 

 

总结,可以看到:

相同迭代次数下

学习率越高,回归模型预测越准确,

学习率越小,回归模型错误率越高,

相同学习率下

迭代次数越多,越快收敛

迭代次数越少,收敛的越慢

本文地址:http://www.yangchaofan.cn/archives/1412
版权声明:本文为原创文章,版权归 金诚 所有,欢迎分享本文,转载请保留出处!
NEXT:已经是最新一篇了

说点什么

avatar
  Subscribe  
提醒