这是《Python深度学习》第一个回归问题,它的预测值是一个数值。常用的损失函数是均方误差MSE,常用的回归指标是平方绝对误差MAE

1.数据集介绍

波士顿房价是1970s波士顿郊区房屋价格的中位数,包含506个数据,分为404个训练样本和102个测试样本。每个样本有13个数值特征。

2.思路

与先前的手写数字和电影评论分类的例子不同,房价预测中的特征的重要性不一致,而且由于单位不尽相同,需要先对数据进行标准化处理。其次设定网络结构,然后确定网络参数,沿用电影分类中方式,先预训练一波,最后训练目标模型
数据处理->设定网络结构->调节参数->训练目标模型

3.数据预处理

对于这种取值范围差异较大的数据,一般采用标准化处理。
即对于数据的每个特征,减去特征平均值,再除以标准差,这样得到的特征的平均值为0,标准差为1。

4.网络结构

本题样本较小,网络结构不复杂,采用三层全连接层。在项目2中介绍过输入数据为向量(数组组成的数组),标签为标量(单个数组),对于这种类型的问题,带有relu激活的全连接层的简单堆叠表现较好。因此前两层的激活函数为‘relu’。最后一层使用纯线性(不加激活层),这样可以预测任意范围内的值。
第一层:全连接层,设置64个单元,激活函数为‘relu’
第二层:全连接层,设置64个单元,激活函数为‘relu’
第三层:全连接层,设置1个单元

5.参数调节

与路透社电影评论分类的参数选择一致,这里在调参的时候也先进行了预训练。
对于本项目中样本较少的情况,采用k折交叉验证是一个比较好的选择,将数据划分为k分,实例化k个相同的模型,每个模型在k-1个分区上训练,并在剩下的一个分区上进行苹果。最终的验证分数等于k个验证分数的平均。

6.代码详解

from keras.datasets import boston_housing
from keras import models
from keras import layers
import numpy as np
import matplotlib.pyplot as plt#载入数据
(train_data, train_targets), (test_data, test_targets) = boston_housing.load_data()mean = train_data.mean(axis = 0) #计算训练集特征的平均值
std = train_data.std(axis = 0) #计算训练集特征的标准差#训练集特征标准化
train_data  -= mean #减去特征平均值
train_data /= std #除以标准差#测试集特征标准化
test_data -= mean #减去训练集特征平均值
test_data /= std #处理训练集特征的标准差
#在工作流程中,不能使用在测试数据上计算得到的任何结果#搭建网络
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 #返回模型'''
#K折交叉验证
k = 4 #设定k的值
num_val_samples = len(train_data) // k #计算验证集(每一份)的数据个数
num_epochs = 100 #epochs_size的值
all_scores = [] #存放验证分数
all_mae_history = [] #存放验证分数for i in range(k):print('processing fold #', i)val_data = train_data[i * num_val_samples: (i+1) * num_val_samples] #验证集val_targets = train_targets[i*num_val_samples : (i+1)*num_val_samples] #验证集结果#使用concatenate函数将剩下的几份合并成一个训练集,axis表示在哪个轴上合并,为0表示在最外层的轴partial_train_data = np.concatenate([train_data[: i * num_val_samples], train_data[(i+1)*num_val_samples:]], axis=0) #测试集partial_train_targets = np.concatenate([train_targets[:i*num_val_samples], train_targets[(i+1)*num_val_samples:]],axis=0) #训练集实际结果model = build_model() #搭建网络#verbose表示是否查看每次训练的结果,为0表示不看,为2表示每次迭代输出loss等相关值history = model.fit(partial_train_data, partial_train_targets, epochs = num_epochs, batch_size=1, verbose=2) #训练网络mae_history = history.history['mean_absolute_error'] #返回模型的maeall_mae_history.append(mae_history) #记录mae#val_mse, val_mae = model.evaluate(val_data, val_targets, verbose=0) #评估模型#all_scores.append(val_mae)#记录mae#计算所有模型的mae的平均值
average_mae_history = [np.mean([x[i] for x in all_mae_history]) for i in range(num_epochs)]#平滑曲线,将每个值变成上一个值乘以权重和该值乘以权重的和,将曲线的变化率降低。
def smooth_curve(points, factor = 0.9):smooth_points = []for point in points:if smooth_points:previous = smooth_points[-1]smooth_points.append(previous * factor + point * (1-factor))else:smooth_points.append(point)return smooth_pointssmooth_mae_history = smooth_curve(average_mae_history[10 :]) #前10个值偏差过大,去掉。将其他值平滑处理plt.plot(range(1, len(smooth_mae_history) + 1), smooth_mae_history) #绘制曲线
plt.xlabel('Epochs')
plt.ylabel('Validation MAE')
plt.show()
'''
#得到结果发现在第80轮后mae不再显著降低,epochs设为80model = build_model() #搭建模型
model.fit(train_data, train_targets, epochs = 80, batch_size = 16, verbose = 2) #训练模型
test_mse_score, test_mae_score = model.evaluate(test_data, test_targets) #评估模型
print('mse = ',test_mse_score, 'mae = ', test_mae_score)

训练结果

Python深度学习(3):波士顿房价预测相关推荐

  1. 深度学习:波士顿房价预测

    深度学习:波士顿房价预测 1.代码 #加载波士顿房价数据 import keras from keras.datasets import boston_housing (train_data,trai ...

  2. 深度学习入门——波士顿房价预测

    基于神经网络模型的波士顿房价预测 波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的"Hello World".以"波士顿房价预测"任务为例,我们学习如 ...

  3. 深度学习(波士顿房价预测)

    本程序采用百度paddlepaddle深度学习框架,并在百度AI Studio平台上运行. 目录 1实验背景 2 实验过程 2.1 数据处理 2.1.1数据集导入并按规定形状保存 2.1.2数据集的划 ...

  4. 深度学习笔记——波士顿房价预测

    初次接触深度学习,记录一点思考和想法,请大家多多指正. 首先是工具包的导入pycharm 这里我用到了numpy科学计算库,json轻量级的数据交换格式包,以及matplotlib绘图工具包 impo ...

  5. 使用Python和Numpy进行波士顿房价预测任务(二)【深度学习入门_学习笔记】

    使用Python和Numpy进行波士顿房价预测任务–详解 目录: 一.数据处理 (1)读入数据 (2)数据形状变换 (3)数据集划分 (4)数据归一化处理 (5)封装成load data函数 二.模型 ...

  6. 使用Python和Numpy进行波士顿房价预测任务(一)【深度学习入门_学习笔记】

    波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的"Hello World".和大家对房价的普遍认知相同,波士顿地区的房价是由诸多因素影响的. 下载数据集:https:// ...

  7. 深度学习案例分享 | 房价预测 - PyTorch 实现

    原文链接 大家好,我是小寒. 今天来分享一个真实的 Kaggle ⽐赛案例:预测房价.此数据集由 Bart DeCock 于 2011 年收集,涵盖了2006-2010 年期间亚利桑那州埃姆斯市的房价 ...

  8. python数据分析项目实战波士顿房价预测——手写梯度下降法

    导入所需要的库 import numpy as np import pandas as pd from matplotlib import font_manager as fm, rcParams i ...

  9. 示例:波士顿房价预测

    1. 线性回归模型 假设房价和各影响因素之间能够用线性关系来描述: 模型的求解即是通过数据拟合出每个wjw_jwj​和bbb.其中,wjw_jwj​和bbb分别表示该线性模型的权重和偏置.一维情况下, ...

  10. 教你使用百度深度学习框架PaddlePaddle完成波士顿房价预测(新手向)

    首先,本文是一篇纯新手向文章,我自己也只能算是入门,有说错的地方欢迎大家批评讨论 目录 一.人工智能.机器学习.深度学习 二.PaddlePaddle(飞桨) 三.波士顿房价预测模型 数据处理 模型设 ...

最新文章

  1. 徒劳的对抗——如何做好极客的老婆(灵感来源于《你就是极客》)
  2. 【CSWS2014 Summer School】互联网广告中的匹配和排序算法-蒋龙(上)
  3. 【编译打包】haproxy 1.4.23
  4. luogu1355 神秘大三角
  5. 【mysql必知必会】第十二章 汇总数据
  6. laravel 队列学习
  7. UML 10 种常见的域建模错误
  8. 资源放送丨《 MySQL中的索引探究 - 2020云和恩墨大讲堂》PPT视频
  9. oracle联机文档使用,Sqlplus 联机文档学习
  10. SVN的各种符号含义,svn的星号,感叹号,问号等含义
  11. 毕业同学录网站搭建源码分享
  12. 2021全网影视APP搭建教程全套完整版
  13. 层次化网络设计(三层网络结构)
  14. ros学习记录1 Hello World 使用c++
  15. Potplayer如何显示书签,书签编辑器
  16. 南非银行“内鬼”偷走主密钥,后将更换1200万张客户卡,损失惨重
  17. 【PHP项目部署一】PHP环境配置
  18. java计算机毕业设计图书馆管理系统源码+系统+mysql数据库+LW文档+部署文件
  19. 基于ssm的生活故事分享交流博客系统
  20. 群邑智库:2018年1-9月主要央卫视电视剧回顾

热门文章

  1. python爬取上证50ETF成分股信息
  2. 将多个BIN文件合成一个
  3. Windows的CRT中的setlocale()
  4. python计算峰度和偏度、相关系数
  5. 电脑能登录微信,但不能上网
  6. BOSS直聘免费下载个人简历为PDF的方法
  7. 怎么在电脑桌面添加待办便签小助手
  8. 关联规则挖掘与Apriori算法
  9. 菜鸟学R语言(组间多重比较)
  10. win软件 精品推荐磁力资源搜索助手 22.01.22中文特别版