人工神经网络之Python 实战

引言: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],分离超平面法向量为(-10.1,-68.08,64.85),它在y-z平面上的投影是一条直线,该直线的斜率为68.08/64.85=1.05,非常接近我们在生成数据时旋转45度角的设定。感知机学习算法的原始形式算法的函数perceptron_original 图形(如下图所示)。
      
  本文选自《Python大战机器学习:数据科学家的第一个小目标》,点此链接可在博文视点官网查看此书。
                    
  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                       

时间: 2024-09-09 06:20:23

人工神经网络之Python 实战的相关文章

BP人工神经网络的介绍与实现

神经网络概念与适合领域 神经网络最早的研究是 40 年代心理学家 Mcculloch 和数学家 Pitts 合作提出的 ,他们提出的MP模型拉开了神经网络研究的序幕. 神经网络的发展大致经过 3 个阶段:1947-1969 年为初期,在这期间科学家们提出了许多神经元模型和学习规则,如 MP 模型.HEBB 学习规则和感知器等:60 年代末期至 80 年代中期,神经网络控制与整个神经网络研究一样,处于低潮.在此期间,科学家们做了大量的工作,如 Hopfield 教授对网络引入能量函数的概念,给出了

如何用人工神经网络处理决策边界问题?这里有一份简单的代码参考

从本质上说,人工神经网络(ANN)是一种信息处理的范式,它受到人脑信息处理流程的启发,目前在机器学习领域得到了非常广泛的应用. 然而,可能许多人并不知道的是,ANN 早在 40 年代就被提出了.在最初的那几年,ANN 曾在一定程度上引起了业界的关注,但由于那时没有当前强大的硬件运算能力和高效的模型训练算法,因此ANN很快就销声匿迹了.但随着时代的进步,技术的发展,目前 ANN 几乎成了人工智能的代名词,特别是随着自动编码器.卷积网络.Dropout 正则化(dropout regularizat

人工神经网络入门(3) —— 多层人工神经网络应用示例

1 介绍 求异或(XOR)操作是计算机中常用到的一种计算: 0 XOR 0 = 0 0 XOR 1 = 1 1 XOR 0 = 1 1 XOR 1 = 0 我们可以使用第一篇文章中的代码来计算这个结果http://files.cnblogs.com/gpcuster/ANN1.rar( 需要修改其中的训练集),可以发现学习后的结果不能让我们满意,原因是单层神经网络学习能力有限 ,需要使用更加复杂的网络来学习. 在这一篇文章中,我们将使用一个新的多层神经网络来学习. 2 范例程序的使用和说明 该程

人工神经网络入门(1) —— 单层人工神经网络应用示例

1 介绍 还记得在2年前刚刚接触RoboCup的时候,从学长口中听说了ANN(人工神经网络),这个东西可神奇 了,他能通过学会从而对一些问题进行足够好处理.就像咱们人一样,可以通过学习,了解新的知识. 但是2年了,一直想学习ANN,但是一直没有成功.原因很多,其中主要的原因是咱们国内的教程中关 于这个技术的介绍过于理论化,以至于我们基础差和自学者望而却步. 现在,我希望通过一个简单的示例,让大家先有一个感性的认识,然后再了解一些相应的理论,从而 达到更好的学习效果. 2 范例程序的使用和说明 本

人工神经网络(Artificial Neural Netwroks)笔记--离散多输出感知器训练算法

这是对离散单输出感知器算法的扩展 相关的符号定义请参考 <人工神经网络(Artificial Neural Netwroks)笔记-离散单输出感知器算法 > OK,Start Our Game 1.初始化权重矩阵W; 2.重复下列过程,直到训练完成: 2.1对每个样本(X,Y),重复如下过程: 2.1.1 输入X; 2.1.2计算O=F(XW); 2.1.3 for j=1 to m do 执行如下操作: if Oj != Yj then if Oi=0 then for i=1 to n W

人工神经网络(Artificial Neural Netwroks)笔记-连续多输出感知器算法

人工神经网络(Artificial Neural Netwroks)笔记--离散多输出感知器训练算法 中的2.1.3步是多 个判断,因此我们说它是一种离散多输出感知器 现在采用公式 Wij=Wij+α(Yj-Oj)Xi取代了那个步骤 Yj和Oj之间的差别对Wij的影响由α(Yj-Oj)Xi表现出来 这样做的好处是不仅使得算法的控制在结构上更容易理解,而且还使得它的适应面更宽 算法流程如下: 1.用适当的小伪随机数初始化权矩阵W 2.初置精度控制参数ε,学习率α,精度控制变量d=ε+1 3.whi

人工神经网络(Artificial Neural Netwroks)笔记-离散单输出感知器算法

最近在重新学习人工神经网络(Artificial Neural Netwroks),做做笔记,整理思路 离散单输出感知器算法,传说中的MP 二值网络:自变量及其函数的值.向量分量的值只取0和1函数.向量 权向量:W=(w1,w2,w3.....wn) 输入向量:X=(x1,x2,x3.....xn) 训练样本集 {(X,Y)|Y为输入向量X的输出} 训练过程比较简单 如下: 1,初始化权向量W 2,重复下列过程,直到训练完成: 2.1对每个样本(X,Y),重复如下过程: 2.1.1输入X 2.1

人工神经网络(Artificial Neural Netwroks)笔记-基本的非确定性统计训练算法

在上一篇文章 <人工神经网络(Artificial Neural Netwroks)笔记-消除样本顺序的BP算法 >中 修 改权重的方法被称为"最速下降法".每一次权重的修改都是确定的,权重都会被修改.甚至到最简单的 单层感知器也是如此. 但是我们有一个疑问,是否每一次的权重修改都是好的呢? 虽然"最速下降法"能在数学上被证明是每一次都比前一次越来越逼近最优解,但是这个逼近可是一个 无休止的过程.而且面对局部最小点的问题,"最速下降法"

人工神经网络(Artificial Neural Netwroks)笔记-基本BP算法

单层的感知器并不能解决XOR问题 人工神经网络(Artificial Neural Netwroks)也因为这个问题而陷入了低潮,但是后来提出的多层感 知器却让人工神经网络(Artificial Neural Netwroks)再一次high起来 BP网络是最为广泛的一种.具体的原理介绍可以通过网络得到这里只描述算法流程 基本的BP算法 1 for k=1 toL do 初始化W^(k) 2初始化精度控制参数ε 3 E=ε+1 4 while E>ε do 4.1 E=0 4.2 对S中的每个样