线性回归¶

PaddlePaddle官方文档用波士顿房价数据集给出了线性回归的使用教程,由于使用的是内置的数据集以及本身模型的可解释性并不直观,因此本文使用自定义数据集和模型重现了线性回归的建模和预测过程,从而在如下方面进行较为清晰的展示:

  • 数据集的构造

    • 如何构造训练数据集
    • 如何构造测试数据集
  • 模型的构造
    • 本文使用最简单的一元线性回归模型y=3x+1,只要简单修改代码,也可以将其扩展为多元线性归回模型
    • 训练数据集和测试数据集都基于该方程构建

背景介绍

本文使用的PaddlePaddle环境为官方提供的paddlepaddle/book镜像,PaddlePaddle版本为0.11.0,详细信息如下所示:

root@d89b8ceaeb86:/book# paddle version
PaddlePaddle 0.11.0, compiled withwith_avx: ONwith_gpu: OFFwith_mkl: ONwith_mkldnn: ONwith_double: OFFwith_python: ONwith_rdma: OFF

代码样例

# 加载所需包
import paddle.v2 as paddle
import numpy as np
#按照y=3x+1生成训练数据
def train_reader():data = np.array([[1, 4], [2, 7], [3, 10], [4, 13], [5, 16], [6, 19], [7, 22]])def reader():for d in data:yield d[:-1], d[-1:]return reader
#按照y=3x+1生成测试数据
def test_reader():data = ([[0.5, 2.5], [1.5, 5.5], [-2, -5], [0, 1]])def reader():for d in data:yield d[:-1], d[-1:]return reader# 从数据数据集reader中提取测试数据和Label
test_data = []
test_label = []
test_data_creator = test_reader()
for item in test_data_creator():test_data.append((item[0], ))test_label.append(item[1])
#初始化Paddle
paddle.init(use_gpu=False)#配置训练网络
x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(1))
y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear())
y = paddle.layer.data(name='y', type= paddle.data_type.dense_vector(1))
cost = paddle.layer.square_error_cost(input=y_predict, label=y)
# 保存网络拓扑,本段代码不是必须执行的
inference_topology = paddle.topology.Topology(layers=y_predict)
with open ("lessontwo_topology.pkl", 'wb') as f:inference_topology.serialize_for_inference(f)
#创建参数
parameters = paddle.parameters.create(cost)
#创建Trainer
optimizer = paddle.optimizer.Momentum(momentum=0)trainer = paddle.trainer.SGD(cost= cost,parameters=parameters,update_equation=optimizer)
feeding = {'x': 0, 'y': 1}
# 定义event handler,打印训练进度
def event_handler(event):if isinstance(event, paddle.event.EndIteration):if event.batch_id % 1 == 0:print "Pass %d, Batch %d, Cost %f" % (event.pass_id, event.batch_id, event.cost)
# 定义event handler_plot,以图形的形式打印训练进度
from paddle.v2.plot import Plotertrain_title = "Train cost"
test_title = "Test cost"
cost_ploter = Ploter(train_title, test_title)step = 0def event_handler_plot(event):global stepif isinstance(event, paddle.event.EndIteration):if step % 1 == 0:  # every 1 batches, record a train costcost_ploter.append(train_title, step, event.cost)if step % 1 == 0: # every 1 batches, record a test costresult = trainer.test(reader=paddle.batch(test_reader(), batch_size=3),feeding=feeding)cost_ploter.append(test_title, step, result.cost)if step % 1 == 0: # every 1 batches, update cost plotcost_ploter.plot()step += 1if isinstance(event, paddle.event.EndPass):if event.pass_id % 10 == 0:with open('params_pass_%d.tar' % event.pass_id, 'w') as f:trainer.save_parameter_to_tar(f)
# 开始训练
trainer.train(paddle.batch(paddle.reader.shuffle(train_reader(),buf_size=3),batch_size=2),feeding=feeding,event_handler=event_handler_plot,num_passes=10)

# 进行预测
probs = paddle.infer(output_layer=y_predict, parameters=parameters, input=test_data)
for i in xrange(len(probs)):print "label=" + str(test_label[i][0]) + ", predict=" + str(probs[i][0])

PaddlePaddle线性回归示例相关推荐

  1. python线性回归实例_python线性回归示例

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/haluoluo211/article/details/78761466 下面给出sklearn 库线性 ...

  2. Excel一元线性回归示例与演算步骤详解含源码及注释

    Excel一元线性回归示例 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 一元线性回归简介 回归分析只涉及到两个变量(Y因变 ...

  3. python线性回归实例_python 线性回归示例

    说明:此文的第一部分参考了这里 用python进行线性回归分析非常方便,有现成的库可以使用比如:numpy.linalog.lstsq例子.scipy.stats.linregress例子.panda ...

  4. 深度学习实现案例(Tensorflow、PaddlePaddle)

    深度学习实验案例 文章目录 深度学习实验案例 一.基础理论 实验一:自定义感知机 实验二:验证图像卷积运算效果 二.Tensorflow 实验一:查看Tensorflow版本 实验二:Hellowor ...

  5. 曲线 线性回归_机器学习笔记 线性回归

    一.线性回归找到最佳拟合直线 1. 定义 线性回归是通过现有数据,让训练模型生成一个拟合公式,从而计算目标数据的预测值. 在统计学中,线性回归(Linear Regression)是利用称为" ...

  6. 线性回归数据_数据科学笔记(三)——线性回归

    1. 机器学习眼中的线性回归 左图是原始建模数据,目的是用来寻找玩偶数量和成本的某种关系.右图将数据可视化得到散点图. 第一步 进行场景确定 第二步 定义损失函数 建模的目的:模型预测值与真实值之间的 ...

  7. 通过简单的线性回归理解机器学习的基本原理

    在本文中,我将使用一个简单的线性回归模型来解释一些机器学习(ML)的基本原理.线性回归虽然不是机器学习中最强大的模型,但由于容易熟悉并且可解释性好,所以仍然被广泛使用.简单地说,线性回归用于估计连续或 ...

  8. 线性回归csv数据集_数据科学的基石:统计学、机器学习、计算机科学(三)——线性回归...

    数据科学家们常说,所有的模型都是错的,但是,其中一些是有用的.如果一个"有用"的模型能够过滤掉数据中哪些不重要的细枝末节,抓住其主要的内在关系,从而帮助我们更好地理解数据.很多情况 ...

  9. Python 线性回归

    Python 线性回归 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 线性回归简介 相关概念见下: 如果想通过一个模型找到目 ...

最新文章

  1. python3 矩阵运算_3.10 矩阵与线性代数运算
  2. c++读取文件内容并保存到二维数组
  3. Google BigTable到底解决什么问题?
  4. 1452.接水问题(思维)
  5. Svn正确的使用方法
  6. 使用LXCFS实现容器资源的视图隔离
  7. 在debian上安装vmware tools的问题
  8. 硬件工程师的基本技能
  9. 网络 TCP的头部 3次握手和4次挥手 出现大量TIME_WAIT或CLOSE_WAIT的原因及解决办法
  10. 在设备上添加项目失败_使用VisualGDB将Keil项目导入VisualStudio
  11. 关关小说采集器规则正则表达式方法
  12. bios sgx需要开启吗_惠普HP笔记本预装win8改装成win7系统BIOS设置与安装方法
  13. matlab 系统辨识,系统辨识的Matlab实现方法(手把手)..docx
  14. python爬虫案例
  15. android 4编程入门经典pdf 下载,Android4开发入门经典 第四部分.pdf
  16. 论文阅读--Emotion Recognition in Conversation: Research Challenges, Datasets, and Recent Advances
  17. 苹果App Store引发的悲喜狂欢
  18. 区块链技术及实际应用
  19. 计算机顶会英文论文查找
  20. 【REVERSE】REVERSE入门

热门文章

  1. 一个大数据平台省了20个IT人力——敦奴数据平台建设案例分享
  2. 电信人的数据应用:销售指引系统
  3. python 异常处理模块_Python Exceptions 异常处理全过程以及异常模块详细解析
  4. win8计算机用户名在哪里设置,windows8系统用户名微软ID和管理员账户概念详解
  5. python 配置文件对比_Python3实现配置文件差异对比脚本
  6. TransE算法解析
  7. linux无缝升级的版本,Angular 1 和 Angular 2 集成:无缝升级的方法
  8. java log输出到文件路径_log4j中日志输出文件指定相对路径的方法
  9. python 格式化字符串 模板字符串(五分钟读懂)
  10. solr导入mysql失败_mysql – SOLR DataImport错误“无法执行查询”