Keras BP神经网络运用于波士顿房价预测
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神经网络运用于波士顿房价预测相关推荐
- MATLAB房价,MATLAB实现波士顿房价预测使用BP神经网络
MATLAB实现波士顿房价预测使用BP神经网络 MATLAB实现波士顿房价预测,使用BP神经网络 代码如下(包括下载数据和训练网络): %%Download Housing Prices filena ...
- 利用神经网络进行波士顿房价预测
前言 前一阵学校有五一数模节校赛,和朋友一起参加做B题,波士顿房价预测,算是第一次自己动手实现一个简单的小网络吧,虽然很简单,但还是想记录一下. 题目介绍 波士顿住房数据由哈里森和 ...
- 神经网络波士顿房价预测
使用Numpy构建神经网络 百度免费课程学习笔记 课程地址 本节将使用Python语言和Numpy库来构建神经网络模型,向读者展示神经网络的基本概念和工作过程. 构建神经网络/深度学习模型的基本步骤 ...
- 教你使用百度深度学习框架PaddlePaddle完成波士顿房价预测(新手向)
首先,本文是一篇纯新手向文章,我自己也只能算是入门,有说错的地方欢迎大家批评讨论 目录 一.人工智能.机器学习.深度学习 二.PaddlePaddle(飞桨) 三.波士顿房价预测模型 数据处理 模型设 ...
- PaddlePaddle实现波士顿房价预测
PaddlePaddle实现波士顿房价预测 AIStudio地址 Github地址 #加载飞桨.Numpy 和相关库 import paddle import paddle.fluid as flui ...
- 深度学习入门——波士顿房价预测
基于神经网络模型的波士顿房价预测 波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的"Hello World".以"波士顿房价预测"任务为例,我们学习如 ...
- 使用Python和Numpy进行波士顿房价预测任务(二)【深度学习入门_学习笔记】
使用Python和Numpy进行波士顿房价预测任务–详解 目录: 一.数据处理 (1)读入数据 (2)数据形状变换 (3)数据集划分 (4)数据归一化处理 (5)封装成load data函数 二.模型 ...
- 深度学习:波士顿房价预测
深度学习:波士顿房价预测 1.代码 #加载波士顿房价数据 import keras from keras.datasets import boston_housing (train_data,trai ...
- 统计学习基础:数据挖掘、推理和预测_百度零基础深度学习笔记(三) 波士顿房价预测...
波士顿房价预测 波士顿房价预测是一个经典的机器学习任务,期待构建一个房价预测模型,其数据中包含13个影响房价的因素和该类型房屋均价. 波士顿房价影响因素 数据预处理 数据预处理包括: 数据导入 数据形 ...
最新文章
- 如何评估自己对外界认知是否正确?
- 计算机组成原理中lad什么意思,计算机组成原理的大神们能不能帮忙做几道题啊...
- eclipse中可以导入其它工具编写的RobotFramework脚本吗?
- @slf4j注解_SpringBoot + Redis + 注解 + 拦截器 实现接口幂等性校验
- Android中BroadCastReceiver使用(整理)
- linux 检测蓝牙 rssi,树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)...
- LeetCode 1619. 删除某些元素后的数组均值
- 前端渲染引擎doT.js解析
- (大数据工程师学习路径)第五步 MySQL参考手册中文版----MySQL视图
- 【AS3代码】AS调用JS
- js-JavaScript高级程序设计学习笔记2
- 老男孩Linux高新运维第28期最终篇+老男孩Linux运维+老男孩linux运维全套
- AllenNLP框架学习笔记(数据篇之二)
- 生信常用分析图形绘制02 -- 解锁火山图真谛!
- [UIDevice currentDevice] setValue 强制屏幕旋转不生效
- c语言之良好的编程习惯(一)
- html5团队特效,CSS3团队成员介绍卡片特效
- HECO使用docker部署单节点的开发网
- java汉字获取拼音的方法
- 二分查找法及其四种变形(MATLAB)
热门文章
- 第三届国际金融科技论坛开幕,神州信息专家参与蓉城“论道”
- Axure 点图片外区域即隐藏_好用的图片处理软件JixiPix Hand Tint Pro
- A Game of Thones(65)
- 怎么查看显卡算力(附nvidia显卡算力表)
- HTML+CSS flex弹性布局
- Java API文档的使用详解
- 论文中看到的光线投影法(ray casting)是什么?
- 泡芙噶的计算机网络(2)-紧张刺激的Wireshark实验
- 按键精灵两种方法对大漠进行注册regsvr32
- python混淆ios代码_iOS-代码混淆