Python深度学习(预测房价:回归问题)--学习笔记(七)

本文介绍了使用深度学习预测波士顿房价的回归问题,包括数据预处理、网络构建、K折验证以及常用评估指标。通过波士顿房价数据集,阐述了在小数据集上如何避免过拟合并有效评估模型性能。
摘要由CSDN通过智能技术生成

3.6 预测房价:回归问题

  • 前面两个例子都是分类问题,其目标是预测输入数据点所对应的单一离散的标签。另一种常见的机器学习问题是回归问题,它预测一个连续值而不是离散的标签,例如,根据气象数据预测明天的气温,或者根据软件说明书预测完成软件项目所需要的时间。
3.6.1 波士顿房价数据集
  • 本节将要预测20世纪70年代中期波士顿房屋价格的中位数,已知当时郊区的一些数据点,比如犯罪率、当地房产税等。本节用到的数据集与前面两个例子有一个有趣的去吧。它包含的数据点相对较少,只有506个,分为404个训练样本和102个测试样本。输入数据的每个特征(比如犯罪率)都有不同的取值范围。
# 加载波士顿房价数据
from keras.datasets import boston_housing

(train_data, train_targets), (test_data, test_targets) = boston_housing.load_data()

print(train_data.shape)
print(test_data.shape)
  • 404个训练样本和102个测试样本,每个样本都有13个数值特征,比如人均犯罪率、每个住宅的平均房间数、高速公路可达性等。目标是房屋价格的中位数,单位是千美元。
3.6.2 准备数据
  • 将取值范围差异很大的数据输入到神经网络中,这是有问题的。网络可能会自动适应这种取值范围不同的数据,但学习肯定变得更加困难。对于这种数据,普遍采用的最佳实践是对每个特征做标准化,即对于输入数据的每个特征(输入数据矩阵中的列),减去特征平均值,再除以标准差,这样得到的特征平均值为0,标准差为1。
# 数据标准化
mean = train_data.mean(axis=0)
train_data -= mean
std = train_data.std(axis=0)
train_data /= std

test_data -= mean
test_data /= std
  • 用于测试数据标准化的均值和标准差都是在训练数据上计算得到的。在工作流程中,不能使用在测试数据上计算得到的任何结果。
3.6.3 构建网络
  • 由于样本数量很少,我们将使用一个非常小的网络,其中包含两个隐藏层,每层有64个单元。一般来说,训练数据越少,过拟合会越严重,而较小的网络可以降低过拟合。
def build_model():
    model = models.Sequential() # 因为需要将一个模型多次实例化,所以用一个函数来构建模型
    model.add(layers.Dense(64, activation='relu', input_shape=(train_data.shape[1], )))
    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dense(1))
    model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
    return model
  • 网络的最后一层只有一个单元,没有激活,是一个线性层。这是标量回归(标量回归
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值