PaddlePaddle 来搭建一个简单的线性回归模型

1、实验简介
在本次实验中我们将使用 PaddlePaddle 来搭建一个简单的线性回归模型,并利用这一模型预测你的储蓄(在某地区)可以购买多大面积的房子。并且在学习模型搭建的过程中,了解到机器学习的若干重要概念,掌握一个机器学习预测的基本流程。
2、实验目的:
 掌握机器学习基本概念:假设函数、损失函数、优化算法
 掌握数据归一化处理技巧
 掌握如何搭建全连接神经网络,实现线性回归
3、实验环境说明
Paddle 需要时 1.0 以上版本,python2.7,jupyter 上操作
4、数据集介绍:
本次数据集使用的是 2016 年 12 月份某市某地区的房价分布。为了简化模型,假设影响房价的因素只有房屋面积,因此数据集只有两列,以 TXT 的形式储存。

5、实验步骤:
5.1导入库:
说明:
 numpy:一个 python 的基本库,用于科学计算
 matplotlib.pyplot:用于生成图,在验证模型准确率和展示成本变化趋势时会使用到
 paddle.fluid:PaddlePaddle 其中一种深度学习框架
 pandas:一种基于 NumPy 的工具,高效处理数据
5.2数据预处理:
5.2.1数据集添加标题:
说明:数据集里面是没有标注“房屋面积”和“房价”的,我们可以自己加上这两列标注。
显示结果应该为:

5.2.2数据归一化:
接下来对数据集进行归一化操作
打印的输出结果应该为:

5.2.3数据集分割:
将原始数据处理为可用数据后,为了评估模型的好坏,我们将数据分成两份:训练集和测试 集。打印的输出结果应该为:

5.3定义 reader
构造 read_data()函数,来读取训练数据集 train_set 或者测试数据集 test_set。它的具体实现是在 read_data()函数内部构造一个 reader(),使用 yield 关键字来让 reader()成为一个 Generator(生成器),注意,yield 关键字的作用和使用方法类似 return 关键字,不同之处在于 yield 关键字可以构造生成器(Generator)。
虽然我们可以直接创建一个包含所有数据的列表,但是由于内存限制,我们不可能创建一个无限大的或者巨大的列表,并且很多时候在创建了一个百万数量级别的列表之后,我们却只需要用到开头的几个或几十个数据,这样造成了极大的浪费,而生成器的工作方式是在 每次循环时计算下一个值,不断推算出后续的元素,不会创建完整的数据集列表,从而节约了内存使用。
然后就可以得到训练数据和测试数据:
5.4训练过程:
5.4.1定义运算场所
将设计完成的网络参数写入 train_program() 函数,便于训练时调用:
5.4.2创建 optimizer:
feed_order=[‘x’, ‘y’] 是数据层名称和数组索引的映射,用于定义数据的读取顺序。
params_dirname 用于定义模型保存路径。
接下来定义事件处理器 event_handler_plot(event) 用于打印训练过程,在 fulid 中有两种形式的事件处理器,分别是文字形式与图像形式。本次使用的是图像形式的处理器,当训练
开始时调用该函数,可以得到 loss 变化图像,便于使用者进行参数调整。
5.4.3定义执行器:
用户配置完模型后,参数初始化操作会被写入到 fluid.default_startup_program() 中。使用fluid.Executor() 运行 这一程序,即可在全局 fluid.global_scope() 中随机初始化参数。

5.4.4设置训练参数:
5.4.5创建训练器并开始训练:
5.5训练过程可视化:
训练开始之后,得到的 cost 函数变化图像大致应是一个收敛的结果:

5.6预测:
5.6.1设定预测程序:
类似于 trainer.train,预测器需要一个预测程序来做预测。我们可以稍加修改我们的训练程序来把预测值包含进来。
5.6.2开始预测:
预测器会从 params_dirname 中读取已经训练好的模型,来对从未遇见过的数据进行预测。
 tensor_x:生成 b atch_size 个[0,1]区间的随机数,以 tensor 的格式储存
 results:预测对应 tensor_x 面积的房价结果
 raw_x:由于数据处理时我们做了归一化操作,为了更直观的判断预测是否准确,将数据进行反归一化,得到随机数对应

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向蜗牛一样的笑开研

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值