Python中Keras深度学习库的回归教程

本文详细介绍了如何使用Keras库构建和评估神经网络模型以解决回归任务,涉及数据加载、基准模型创建、数据标准化以及网络拓扑结构的调整。通过10倍交叉验证,展示了更深和更宽的网络结构对模型性能的提升。
摘要由CSDN通过智能技术生成

Keras 是一个深度学习库,它封装了高效的数学运算库 Theano 和 TensorFlow。

在这篇文章中,你将会了解到如何使用 Keras 开发和评估神经网络模型来解决回归问题。

在完成这个循序渐进的教程后,你将知道:

  • 如何加载 CSV 数据集并将其作为 Keras 库算法的输入。
  • 如何使用 Keras 建立一个回归问题的神经网络模型。
  • 如何使用 Keras 和 scikit-learn 交叉验证来评估模型。
  • 如何进行数据处理,以提高 Keras 模型的性能。
  • 如何调整 Keras 模型的网络拓扑结构。

现在就让我们开始吧。

  • 2017 年 3 月 更新:基于 Keras 2.0.2,TensorFlow 1.0.1 和 Theano 0.9.0 版本的示例
Python Keras深度学习库回归问题教程 照片由Salim Fadhley拍摄,保留相应权利。

1.问题描述

我们在本教程中要解决问题基于波士顿房价数据集

你可以通过这个链接下载这个数据集,并将其保存到当前工作目录,命名为 housing.csv。

该数据集描述了波士顿郊区房屋的13个数字量化属性,并以每十万美元的平方数为单位模拟郊区房屋的价格。因此,这是一个回归预测建模问题。输入属性包括犯罪率,非零售商业面积,化学污染浓度等等。

这是机器学习研究中一个很好的问题。因为所有的输入和输出属性都是量化的,并且有多达506个实例可以使用,所以这个问题研究起来很方便。

使用均方误差(MSE)评估的模型的合理性能约为20平方每十万美元(也就是每平方米4500美元)。这个数字对于我们的神经网络来说是一个很好的训练目标。

2.开发基准神经网络模型

在本节中,我们将为回归问题创建一个基准神经网络模型。

首先介绍本教程所需的所有函数和对象(所需的Python库)。

import numpy
import pandas
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

在引入所需的库后,我们现在可以从本地目录中的文件加载我们的数据集。

UCI机器学习库中的数据集实际上不是 CSV 格式,而是用空格分隔两个属性。我们可以使用pandas库轻松加载这个数据集。然后,分离输入(X)和输出(Y)属性,以便更容易使用 Keras 和 scikit-learn 进行建模。

# load dataset
dataframe = pandas.read_csv("housing.csv", delim_whitespace=True, header=None)
dataset = dataframe.values
# split into input (X) and output (Y) variables
X = dataset[:,0:13]
Y = dataset[:,13]

我们可以使用 scikit-learn 来创建,并通过其易用的包装对象来评估 Keras模型。这样的方式是很理想的,因为 scikit-learn 擅长评估模型,并允许我们通过寥寥数行代码,就能使用强大的数据预处理和模型评估方案。

Keras 包装函数需要一个函数作为参数。这个必须被定义的函数负责创建要评估的神经网络模型。

下面我们来定义创建待评估的基准模型的函数。这是一个简单的模型,只有一个完全连接的隐藏层,具有与输入属性相同数量的神经元(13个)。网络使用隐藏层 relu 激活函数。没有激活函数用于输出层,因为这是一个回归问题,我们希望直接预测数值,而不需要采用激活函数进行变换。

我们会使用高效的 ADAM 优化算法以及优化的最小均方误差损失函数。这将是我们用来评估多个模型性能时的统一度量。这是一个可取的指标,因为通过平方根计算输出一个错误值,我们可以直接在问题的背景下(十万美元为单位)理解。

# define base model
def baseline_model():
# create model
model = 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值