设为首页 收藏本站
查看: 1362|回复: 0

[经验分享] 人工神经网络之Python 实战

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-8-15 08:06:04 | 显示全部楼层 |阅读模式
  引言:Python是最好最热门的编程语言之一,以简单易学、应用广泛、类库强大而著称,是实现机器学习算法的首选语言。本文以人工神经网络的实战为例,证明需要深入理解算法的原理、优劣势等特点以及应用场景,以能达到应用自如的程度。
  本文选自《Python大战机器学习:数据科学家的第一个小目标》。
  在本次操作前,这里需要导入的包为:

感知机学习算法的原始形式
  给出生成线性可分数据集的生成算法:


  •   参数
      ■n:正类的样本点数量,也是负类的样本点数量。总的样本点数量为2n。
  •   返回值:所有的样本点组成的数组,形状为(2*n,4)。数组中的每一行代表一个样本点,由其特征x和标记y组成。
  其过程为:首先在z轴坐标为20 的上方生成n个随机点作为正类,在z轴坐标为10 的下方生成n个随机点作为负类。此时在平面z= 10, z= 20 作为隔离带。然后45度旋转x坐标轴,再返回这些点在新坐标轴中的坐标。注意这里混洗了数据,否则会发现数据集的前半部分都是正类,后半部分都是负类,需要混洗数据从而让正负类交叉出现。
  绘制数据集的函数为:


  •   参数
  ■ax:一个Axes3D实例,负责绘制图形。
  ■samples:代表训练数据集的数组,形状为(N,n_features+1),其中N为样本点的个数,n_features代表特征数量(这里为3,表示三个特征)。
  plot_samples函数的用法为:

  然后给出感知机学习算法的原始形式算法的函数(图形如下图所示):


  perceptron_data

  •   参数
  ■train_data:代表训练数据集的数组,形状为(N,n_features+1),其中N为样本点的个数,n_features代表特征数量(这里为3,表示三个特征)。
  ■eta:学习率。
  ■w_0:即w0,是一个列向量。
  ■b_0:即b0,是一个标量。

  •   返回值:一个元组,成员为w,b 以及迭代次数。
  其过程为:

  •   最外层循环只有在全部分类正确的这种情况下退出
  •   内层循环从前到后遍历所有的样本点。一旦发现某个样本点是误分类点,就更新w,b然后重新从头开始遍历所有的样本点。
  由于需要绘制分离超平面,因此需要根据w,b 给出生成分离超平面的函数:


  •   参数
  ■x:分离超平面上点的x坐标组成的数组。
  ■y:分离超平面上点的y坐标组成的数组。
  ■w:即w,超平面的法向量,它是一个列向量。
  ■b:即b,超平面的截距。

  •   返回值:分离超平面上点的z坐标组成的数组。
  其过程就是根据wxx+wyy+wzz+b=0这个方程求得的。
  综合上述函数,可以观察感知机学习算法的原始算法的运行情况:

  算法得到的w为[[-10.1] [-68.08433252][ 64.85174234]],分离超平面法向量为(-10.1,-68.08,64.85),它在y-z平面上的投影是一条直线,该直线的斜率为68.08/64.85=1.05,非常接近我们在生成数据时旋转45度角的设定。感知机学习算法的原始形式算法的函数perceptron_original 图形(如下图所示)。

  本文选自《Python大战机器学习:数据科学家的第一个小目标》,点此链接可在博文视点官网查看此书。

  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-551927-1-1.html 上篇帖子: python3学习知识点笔记 下篇帖子: Python基础-第二天
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表