1.前言
上一篇文章对感知机的理论进行了推导与总结,本文将基于Python实现感知机算法的原始形式与对偶形式。开发机器学习应用程序一般包括收集数据、准备输入数据、分析输入数据、训练算法、测试算法、使用算法等步骤,出于学习的目的,本文基于人为给定的样本数据进行算法训练。
2.感知机原始形式
2.1准备数据集
以上给定的数据集共包含6个样本数据(对应平面上的6个点),对应类别为1/-1,每个数据有两个特征;为简化模型,给每个样本新增一个特征x0=1。
2.2实现感知机算法
学习率a赋值为1,权重w赋初值为0;训练过程中,查找是否存在误分类的样本,并基于误分类的样本更新权重w,直到全部样本分类正确,PLA训练结束,返回参数w。
2.3分类可视化
为了直观地展示分类结果,将样本数据以及分割线绘制在二维坐标系中。
2.4测试算法
对算法进行测试得到运行结果,参数w=[-6,1,2],绘制出以下分类效果图:
3.感知机对偶形式
感知机对偶形式将事先计算好样本的内积矩阵(Gram矩阵),在算法执行时可以通过查询Gram矩阵快速计算某个样本是否误分类,使得算法的执行速度得以提高。
因此,与原始形式相比,对偶形式在软件实现上的主要差异在于计算内积矩阵(calc_gram)与参数更新(update)。
领取专属 10元无门槛券
私享最新 技术干货