【例子】BP神经网络预测城市犯罪指标

目录

一、BP神经网络简介

1.1.BP神经网络的作用

1.2.BP神经网络模型

二、BP神经网络预测城市犯罪指数

2.1.城市数据介绍

2.2 BP神经网络模型与实现代码


本文先简单介绍BP神经网络是什么,有什么用,然后展示如何使用BP神经网络来通过城市医疗、文化、经济等指标来预测城市的犯罪指标。

声明:本文部分图文来自《老饼讲解-BP神经网络》https://bp.bbbdata.com

一、BP神经网络简介

BP神经网络,全称反向传播(Back Propagation)神经网络,是1986年由Rumelhart和McClelland为首的科学家提出的概念。它是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络模型之一。BP神经网络的基本思想是梯度下降法,利用梯度搜索技术,使网络的实际输出值和期望输出值的误差均方差为最小。其核心算法包括信号的前向传播和误差的反向传播两个过程。

1.1.BP神经网络的作用

BP神经网络具有广泛的应用,它可以用于解决各种问题,例如分类问题(如手写数字识别、图像分类等)、回归问题(如预测股票价格、气候预报等)、控制问题(如飞行控制、汽车驾驶控制等)、数据压缩、自然语言处理(如文本分类、机器翻译等)以及强化学习等。此外,BP神经网络还可以应用于解决其他问题,如生物信息学问题、物体识别、脑电信号分析等等。

简单来说,就是在完全不知道X和y的逻辑关系时,可以通过采集到大量历史数据样本,使用BP神经网络来拟合x与y的关系,使得在新样本中可以通过BP神经网络来预测y

如下:

1.2.BP神经网络模型

BP神经网络模型如下:

BP神经网络模型是一种多层前馈神经网络,它主要是根据误差反向传播算法进行训练。这种网络模型由信息的正向传播和误差的反向传播两个过程组成。在正向传播过程中,输入信息从输入层经隐含层逐层处理,并传向输出层。如果输出层不能得到期望的输出,则转入误差的反向传播过程,将误差信号沿原来的连接通路返回,通过修改各神经元的权值,使得误差信号最小。

这种网络模型被广泛应用于各种领域,因为它具有很强的映射能力和非线性处理能力。同时,BP神经网络模型也具有一些缺点,例如训练时间长,容易陷入局部最小值等。因此,在实际应用中,需要根据具体问题选择合适的网络结构和参数,以达到最好的效果。

BP更详细的原理与相关推导见:

老饼|BP神经网络

二、BP神经网络预测城市犯罪指数

2.1.城市数据介绍

matlab自带的城市数据cities.mat如下:

共包含329个城市的9个变量数据:

climate,housing,health, crime,transportation,education,arts,recreation,economics

气候、住房、健康、犯罪、交通、教育、艺术、娱乐、经济

2.2 BP神经网络模型与实现代码

这里以第4个变量crime作为我们的预测目标,其余变量作为预测的输入,建立一个三层的BP神经网络如下:

然后选出10个城市作为模型的测试样本,其余城市作为训练样本对BP神经网络进行训练,

matlab中实现代码如下:

clear all ;
setdemorandstream(666);                 %指定随机种子,这样每次训练出来的网络都一样。
load cities.mat
% ratings的各列变量:climate,housing,health, crime,transportation,education,arts,recreation,economics
train_x = ratings(:,[1:3,5:9])';        % 除了crime外,其余作为X变量
train_y = ratings(:,4)';                % 将crime作为y变量

rnd_idx = randperm(size(train_x,2),10); % 随机抽取10个城市作为测试样本
test_x  = train_x(:,rnd_idx);           % 测试样本的输入变量X  
test_y  = train_y(:,rnd_idx);           % 测试样本的输出变量y
train_x(:,rnd_idx) = [];                % 从训练数据中踢除测试样本的x
train_y(:,rnd_idx) = [];                % 从训练数据中踢除测试样本的y

%使用用输入输出数据建立网络,
%隐节点个数设为3.其中隐层、输出层的传递函数分别为tansig和purelin,使用trainlm方法训练。
net = newff(train_x,train_y,6,{'tansig','purelin'},'trainlm');

%设置一些常用参数
net.trainparam.goal   = 0.0001;               % 训练目标:均方误差低于0.0001
net.trainparam.show   = 400;                  % 每训练400次展示一次结果
net.trainparam.epochs = 15000;                % 最大训练次数:15000.
[net,tr] = train(net,train_x,train_y);        % 调用train函数训练网络

train_py = sim(net,train_x);                  % 调用sim函数计算网络训练数据的预测结果
test_py = sim(net,test_x);                    % 调用sim函数计算网络测试数据的预测结果
% 展示测试数据的结果
bar([test_y;test_py]')                        % 绘制条形图
legend('真实值','预测值')                     % 展示图例
title('城市犯罪指数预测结果')                 % 添加标题
mae_rate = mean(abs(test_y- test_py))/sum(test_y)   % 计算MAE率

代码的运行结果如下:

可以看到,在预测中虽然没有极度准确,但已经有一定的准确性了。

说明BP神经网络在其余城市的样本训练中,已经学习到了气候、住房、健康、交通、教育、艺术、娱乐、经济与犯罪之间的关系。


编写不易,点个赞吧~!

  • 30
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值