Keras 运用于波士顿房价预测

导入相关的包

import keras
from sklearn.datasets import load_boston
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD,Adam
import numpy as np
from sklearn.model_selection import train_test_split

载入数据

因为数据各个特征取值范围各不相同,不能直接送到神经网络模型中进行处理。尽管网络模型能适应数据的多样性,但是相应的学习过程变得非常困难。一种常见的数据处理方法是特征归一化normalization—减均值除以标准差;数据0中心化,方差为1.

house = load_boston()
x = house.data
y = house.target
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.1)
print(x.shape)
print(y.shape)
#归一化
mean = x.mean(axis=0)
std = x.std(axis=0)
x_train -= mean
x_train /= std
x_test -= mean
x_test /= std
print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)
(506, 13)
(506,)
(455, 13)
(455,)
(51, 13)
(51,)

模型构建

构建13-64-64-1神经网络

def build_model():model = Sequential()model.add(Dense(64, activation='relu',input_shape=(x_train.shape[1],)))model.add(Dense(64, activation='relu'))model.add(Dense(1))adam = Adam(lr = 0.001)model.compile(optimizer=adam, loss='mse', metrics=['accuracy'])return model

训练模型

K折交叉验证
当调整模型参数时,为了评估模型,我们通常将数据集分成训练集和验证集。但是当数据量过小时,验证集数目也变得很小,导致验证集上的评估结果相互之间差异性很大—与训练集和测试集的划分结果相关。评估结果可信度不高。

最好的评估方式是采用K折交叉验证–将数据集分成K份(K=4或5),实例化K个模型,每个模型在K-1份数据上进行训练,在1份数据上进行评估,最后用K次评估分数的平均值做最后的评估结果。

k = 4
num_val_samples = len(x_train) // k
num_epochs = 100
all_scores = []
for i in range(k):print('processing fold #',i)val_data = x_train[i*num_val_samples : (i+1)*num_val_samples] # 划分出验证集部分val_targets = y_train[i*num_val_samples : (i+1)*num_val_samples]partial_train_data = np.concatenate([x_train[:i*num_val_samples],x_train[(i+1)* num_val_samples:] ],axis=0) # 将训练集拼接到一起partial_train_targets = np.concatenate([y_train[:i*num_val_samples],y_train[(i+1)* num_val_samples:] ],axis=0)model = build_model()model.fit(partial_train_data,partial_train_targets,epochs=num_epochs,batch_size=16,verbose=0)#模型训练silent模型val_mse, val_mae = model.evaluate(val_data, val_targets, verbose=0) # 验证集上评估all_scores.append(val_mae)
processing fold # 0
processing fold # 1
processing fold # 2
processing fold # 3
model = build_model()
for step in range(30001):cost = model.train_on_batch(x_train,y_train)

评估模型

#评估模型
test_loss,test_accuracy = model.evaluate(x_test,y_test)
print('loss:',test_loss)
51/51 [==============================] - 0s 6ms/step
loss: 16.295210819618376

预测结果

y_pred = model.predict(x_test)
y_test = y_test.reshape(-1,1)
print(y_test.shape)
print(y_pred.shape)
y = np.concatenate((y_test,y_pred),axis=1)
print(y)
(51, 1)
(51, 1)
[[22.4        29.00861359][26.4        20.00535774][19.         19.89637184][22.2        23.57507515][ 8.8        16.45183182][13.9        12.0325613 ][15.6        17.47181129][22.9        30.84517479][20.7        21.34505653][25.         24.71461678][ 9.7        14.47148418][13.8        14.16065502][20.8        21.88388634][32.2        32.33004379][21.2        20.74515915][34.9        37.37858963][18.4        14.51666927][25.2        27.09690285][36.         35.71841049][24.7        24.20606422][23.9        24.70848465][15.2        10.63304234][12.5        13.14098263][23.2        18.67226028][24.2        24.51757431][44.8        46.45916367][16.4        16.53090096][17.4        20.09835815][19.6        17.38390923][25.1        23.30638313][20.3        20.64103889][18.6        21.87194443][15.2        15.76328373][43.1        40.18106461][15.3         4.6482749 ][22.9        21.33856583][22.1        24.22558022][35.4        37.21940994][21.2        21.54840088][13.5        11.08192062][13.4        18.37044334][50.         61.65808868][28.7        24.61343956][26.5        31.44546509][12.7        16.45353699][50.         48.83145905][14.3        13.62646389][18.5        23.34628105][17.4        20.22313881][24.         13.78490162][30.7        29.4163208 ]]

小结

回归问题:损失函数通常为MSE均方误差;
模型评估监测指标通常为MAE(mean absolute error);
当数据取值范围不一致时,需要对特征进行预处理;
数据量小时,可以采用K折验证来衡量模型;
数据量小时,模型复杂度也应该相应的简单,可以避免模型过拟合。

Keras BP神经网络运用于波士顿房价预测相关推荐

  1. MATLAB房价,MATLAB实现波士顿房价预测使用BP神经网络

    MATLAB实现波士顿房价预测使用BP神经网络 MATLAB实现波士顿房价预测,使用BP神经网络 代码如下(包括下载数据和训练网络): %%Download Housing Prices filena ...

  2. 利用神经网络进行波士顿房价预测

    前言 ​    前一阵学校有五一数模节校赛,和朋友一起参加做B题,波士顿房价预测,算是第一次自己动手实现一个简单的小网络吧,虽然很简单,但还是想记录一下. 题目介绍 ​    波士顿住房数据由哈里森和 ...

  3. 神经网络波士顿房价预测

    使用Numpy构建神经网络 百度免费课程学习笔记 课程地址 本节将使用Python语言和Numpy库来构建神经网络模型,向读者展示神经网络的基本概念和工作过程. 构建神经网络/深度学习模型的基本步骤 ...

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

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

  5. PaddlePaddle实现波士顿房价预测

    PaddlePaddle实现波士顿房价预测 AIStudio地址 Github地址 #加载飞桨.Numpy 和相关库 import paddle import paddle.fluid as flui ...

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

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

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

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

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

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

  9. 统计学习基础:数据挖掘、推理和预测_百度零基础深度学习笔记(三) 波士顿房价预测...

    波士顿房价预测 波士顿房价预测是一个经典的机器学习任务,期待构建一个房价预测模型,其数据中包含13个影响房价的因素和该类型房屋均价. 波士顿房价影响因素 数据预处理 数据预处理包括: 数据导入 数据形 ...

最新文章

  1. 如何评估自己对外界认知是否正确?
  2. 计算机组成原理中lad什么意思,计算机组成原理的大神们能不能帮忙做几道题啊...
  3. eclipse中可以导入其它工具编写的RobotFramework脚本吗?
  4. @slf4j注解_SpringBoot + Redis + 注解 + 拦截器 实现接口幂等性校验
  5. Android中BroadCastReceiver使用(整理)
  6. linux 检测蓝牙 rssi,树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)...
  7. LeetCode 1619. 删除某些元素后的数组均值
  8. 前端渲染引擎doT.js解析
  9. (大数据工程师学习路径)第五步 MySQL参考手册中文版----MySQL视图
  10. 【AS3代码】AS调用JS
  11. js-JavaScript高级程序设计学习笔记2
  12. 老男孩Linux高新运维第28期最终篇+老男孩Linux运维+老男孩linux运维全套
  13. AllenNLP框架学习笔记(数据篇之二)
  14. 生信常用分析图形绘制02 -- 解锁火山图真谛!
  15. [UIDevice currentDevice] setValue 强制屏幕旋转不生效
  16. c语言之良好的编程习惯(一)
  17. html5团队特效,CSS3团队成员介绍卡片特效
  18. HECO使用docker部署单节点的开发网
  19. java汉字获取拼音的方法
  20. 二分查找法及其四种变形(MATLAB)

热门文章

  1. 第三届国际金融科技论坛开幕,神州信息专家参与蓉城“论道”
  2. Axure 点图片外区域即隐藏_好用的图片处理软件JixiPix Hand Tint Pro
  3. A Game of Thones(65)
  4. 怎么查看显卡算力(附nvidia显卡算力表)
  5. HTML+CSS flex弹性布局
  6. Java API文档的使用详解
  7. 论文中看到的光线投影法(ray casting)是什么?
  8. 泡芙噶的计算机网络(2)-紧张刺激的Wireshark实验
  9. 按键精灵两种方法对大漠进行注册regsvr32
  10. python混淆ios代码_iOS-代码混淆