5.多层感知器(神经网络)的代码实现

目录

1  导入库

2  分析数据

3  构建模型

3.1  定义输入

3.2  创建模型

3.3  编译模型

3.4  训练模型

4  数据预测


1  导入库

5.多层感知器(神经网络)的代码实现_第1张图片

2  分析数据

我们这次使用数据集是关于广告与销量的,名为Advertising

5.多层感知器(神经网络)的代码实现_第2张图片

我们打开这个数据集看一下

5.多层感知器(神经网络)的代码实现_第3张图片

数据为了避免泄露隐私问题,所以数据进行了脱敏处理,所以当前显示数值中会按照一定计算方法对应另一个现实数值,也就是说当前显示的数值不直接与显示挂钩,今后的数据集大多也都会进行脱敏处理

读取数据之后我们查看一下前几行

5.多层感知器(神经网络)的代码实现_第4张图片

TV,radio,newspaper列下面的数值分别代表电视,广播,报纸的投放量,sales列代表使用前三种投放量所带来的销量

我们从上面的介绍大致能猜一下,如果投放量越多,销量也就越好,销量和投放量中有线性的关系,我们下面把数据集作为图画出来验证一下,x轴我们定义为TV的投放量,y轴定义为销量

5.多层感知器(神经网络)的代码实现_第5张图片

我们通过图可以看出我们的猜想是基本正确的TV的投放量,销量也就越高

我们下面再看一下radio与newspaper

5.多层感知器(神经网络)的代码实现_第6张图片

  • 广播投放与销量隐约也有一种线性关系

5.多层感知器(神经网络)的代码实现_第7张图片

  • 报纸投放与销量的线性关系就不是很好


3  构建模型


3.1  定义输入

我们的输入为电视广播报纸的投放量,我们先把这三列的值取出来

  • 上面这个语句的意思是除去第一列和最后一列的所有列

5.多层感知器(神经网络)的代码实现_第8张图片

之后我们定义输入,输出为csv文件中的最后一列,这个是我们的销量

5.多层感知器(神经网络)的代码实现_第9张图片

3.2  创建模型

我们可以把层直接写在Sequential()中,10是意思是该层的神经元个数,input_shape输入为三维输入(电视,广播,报纸分别占一个),后面的一层是输出层,我们只需要回归一个结果

我们看一下当前的模型,dense层我们可以理解为该神经元在执行 y = ax + b 这个操作

5.多层感知器(神经网络)的代码实现_第10张图片

这个dense我们可以这样理解,之前我们做线性回归的时候,一个dense的神经元有两个参数,这时因为我们的输入是一维的,那么我们dense的运算就为 y = ax + b

当前我们的输入为3维,那么dense的运算就为 y = a1x1 + a2x2 + a3x3 + b。a1,a2,a3是电视,广播,报纸输入对应的权重,b是偏置,这样我们一个神经元就有a1,a2,a3,b这四个参数,我们当前定义了10个神经元,所以第一层的参数为40

那么我们第二个dense层的就是进行了这个操作 y = a1x1 + a2x2 + a3x3 + a4x4 + a5x5 + a6x6 + a7x7 + a8x8 + a9x9 + a10x10 + b,一共有10个参数


3.3  编译模型

优化器使用adam,损失值使用loss

3.4  训练模型

输入为之前定义的x,输出为之前定义的y,训练100次,一个epoch是一次正向转播加一次反向传播的过程

5.多层感知器(神经网络)的代码实现_第11张图片

5.多层感知器(神经网络)的代码实现_第12张图片

4  数据预测

我们首先定义要预测的数据test,10的意思是我们使用data中的前10行数据,1与-1是从第1列到倒数第2列

5.多层感知器(神经网络)的代码实现_第13张图片

  • 写-1是因为在iloc()中的中括号包含左不包含右

之后我们对test进行预测

5.多层感知器(神经网络)的代码实现_第14张图片

我们再看一下实际的数据,前10行的最后一列

5.多层感知器(神经网络)的代码实现_第15张图片

  • 这里的-1与上面的用法不同,我们这个是指定列

我们可以看到预测的数据和原本的数据相似,通过这次的这个代码和前面的线性回归我们可以了解到,数据仅仅为数值时,我们使用dense就可以解决问题

你可能感兴趣的:(tensorflow笔记,神经网络,深度学习)