MATLAB手工实现BP神经网络
掌握BP算法的手工计算,用MATLAB工具箱编程实现模型仿真并用测试数据对性别进行预测。
测试数据1:身高(162cm),体重(56kg),性别(女)。
测试数据2:身高(172cm),体重(75kg),性别(男)。
1. 数据预处理
将原始数据进行处理,性别为“男”设为1,为“女”设为0,应用“=IF(Bi=“男”,1,0)”公式在excel中完成数据预处理的操作,处理后部分数据如下表1。
编号 | 性别 | 身高 | 体重 | output |
---|---|---|---|---|
1 | 男 | 174.2 | 91.9 | 1 |
2 | 女 | 156 | 57.6 | 0 |
3 | 女 | 151.7 | 59.9 | 0 |
4 | 男 | 181.5 | 107.2 | 1 |
5 | 男 | 169.1 | 55.6 | 1 |
6 | 男 | 175.6 | 90.6 | 1 |
7 | 男 | 174.3 | 73 | 1 |
8 | 男 | 175.4 | 67.9 | 1 |
2. 设计网络结构
设计具有一层隐含层,隐含层为2个神经单元,输入层有2个神经单元,输出层有1个神经单元的神经网络,网络结构如下图1。
3. 手工编码
根据神经网络的算法原理在matlab中编写性别分类原理的手工代码,其中初始权值设置为(-2.4/F, 2.4/F)之间的随机数,F为所连单元的输入端个数,初始阈值设置为(-0.5, 0.5)间的随机数,学习率设置为0.01,期望误差设置为10-3,迭代次数设置为2000,最后通过测试样本进行模型的检验,具体代码如下:
clear;
clc;%训练模块
data = xlsread('student.xlsx');
P0 = data(:, 3 : 4);
T = data(:, 5);
[pn, minp, maxp] = premnmx(P0');
P = pn';
col = size(P, 1);
w = -1.2 + 2.4*rand(1, 6);
[miu, v, E] = deal(zeros(1, 3));
b = -0.5 + rand(1, 3);
yita = 0.01;
goal = 0.001;
error = [];
for epochs = 1: 2000s = [];for k = 1: colmiu(1) = P(k, 1)*w(1) + P(k, 2)*w(2) + b(1);v(1) = 1/(1 + exp(-miu(1)));miu(2) = P(k, 1)*w(3) + P(k, 2)*w(4) + b(2);v(2) = 1/(1 + exp(-miu(2)));miu(3) = v(1)*w(5) + v(2)*w(6) + b(3);v(3) = 1/(1 + exp(-miu(3)));E(3) = v(3)*(1 - v(3))*(T(k) - v(3));E(2) = v(2)*(1 - v(2))*E(3)*w(6);E(1) = v(1)*(1 - v(1))*E(3)*w(5);w(6) = w(6) + yita*E(3)*v(2);w(5) = w(5) + yita*E(3)*v(1);for m = 1: 4w(m) = w(m) + yita*E(ceil(m/2))*P(k, 2-rem(m,2));endb = b + yita*E;s = [s, v(3)];enderror0 = mse(s - T');if error0 <goalbreakelseerror = [error error0];end
end
figure;
%绘制迭代结束时预测结果分布图
for n = 1: size(s, 2) if s(n)>0.5plot(n, s(n), '+');hold on;elseplot(n, s(n), 'o');hold on;end
end
%绘制最大均方误差曲线图
figure;
plot(1:size(error, 2), error);%测试模块
output = [];
testp0 = [162 56; 172 75];
[testpn] = premnmx(testp0', 1);
testp = testpn';
for testk = 1: 2miu(1) = testp(testk, 1)*w(1) + testp(testk, 2)*w(2) + b(1);v(1) = 1/(1 + exp(-miu(1)));miu(2) = testp(testk, 1)*w(3) + testp(testk, 2)*w(4) + b(2);v(2) = 1/(1 + exp(-miu(2)));miu(3) = v(1)*w(5) + v(2)*w(6) + b(3);v(3) = 1/(1 + exp(-miu(3)));output = [output, v(3)];
end
disp("预测结果为:");
disp(output);
执行程序得到最大均方误差曲线如图2,预测结果分布如图3。
通过图2可知共经过了2000次迭代,最终的最大均方误差为0.08左右。通过此网络验证测试样本,得到的结果为0.0096和0.9882,可以判定第一个样本性别为“女”,第二个为“男”,与样本所给结果一致。
MATLAB手工实现BP神经网络相关推荐
- MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试
文章目录 MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试 一.题目要求 二.完整的目录结构说明 三.Mnist数据集及数据格式转换 四.BP神经网络相关知识 4.1 ...
- matlab流量预测模型,基于MATLAB工具箱的BP神经网络年径流量预测模型研究——以塔城地区乌拉斯台河为例...
水 文 JOURNAL OF CHINA HYDROLOGY 第28卷第1期 2008年2月 Vol.28 No.1 Feb., 2008 塔城地区位于新疆维吾尔自治区西北边陲, 地处中纬, 虽属内陆 ...
- 基于Matlab平台的BP神经网络进行数据拟合
基于Matlab平台的BP神经网络进行数据拟合 上次讨论了基于Hopfield神经网络的数字识别,BP(Back Propagation)神经网络也可以进行相关的数字识别如手写数字识别等,由于BP神经 ...
- bp神经网络matlab设计实例,bp神经网络matlab实例(bp神经网络matlab实例).doc
bp神经网络matlab实例(bp神经网络matlab实例).doc bp神经网络matlab实例(bp神经网络matlab实例)Case 1 training BP network by momen ...
- 基于Matlab的多层BP神经网络在非线性函数拟合中的应用
本图文详细介绍了如何利用Matlab神经网络工具箱实现多层BP神经网络对非线性函数的拟合.
- bp神经网络matlab实例蚊子,bp神经网络matlab实例
bp神经网络matlab实例 采用 Matlab 工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考 Matlab 帮助文档.实例一% 例 1 采用动量梯度下降算法训练 BP 网 ...
- 利用MATLAB 2016a进行BP神经网络的预测(含有神经网络工具箱)
最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型.时间序列模型,GM(1,1)模型,可是自己在结合实际的工作内容,发现这几种模型预测的精度不是很高,于 ...
- 用matlab实现用Bp神经网络对iris数据集进行分类(以及影响分类性能的参数条件)
数据集已上传,结尾链接下载即可!!! 一.实验内容 Iris鸢尾花卉数据集,是一类多重变量分析的数据集.数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个属性,分别对应花萼长度,花 ...
- 使用MATLAB实现基于BP神经网络训练的手写字母识别程序
前言 大三的时候利用MATLAB搭建了一个基于BP神经网络框架的手写字母识别程序,其中使用了EMNIST数据集进行训练和测试,可实时对手写输入样本进行识别,并返回两个最可能的结果,过程中可继续添加样本 ...
最新文章
- Makefile文件和shell脚本
- [转]C#开发ActiveX控件,.NET开发OCX控件案例
- SVN 常用操作命令 使用笔记
- error C4335: Mac file format detected: please convert the source file to either DOS or UNIX format
- 详细推导PCA算法(包括算法推导必备的知识)
- 公布 | 中国图象图形学学会首批Fellow名单公布
- 第二十九章:学校招生
- 10元/小时?大涨价后,共享充电宝行业迎来“大地震”!
- 该如何清理手机的垃圾?
- LTE学习:RV(冗余版本)
- Mplayer 的编译
- Java实现mds降维_MDS降维方法的目标是要找到数据的低维表示,使得:
- Python基础之字符串
- python二元函数图像在线绘制_Python之Numpy:二元函数绘制/三维数据可视化/3D
- 【日语】动词的九种变形
- 百度云盘电影无字幕,如何寻找字幕加字幕?
- 隧道测量快速坐标反程序48004850计算器
- 极光小课堂 | PostCss浅析之词法分析
- 10分钟教你搭建一个好玩的Python全文搜索引擎
- Vue3 探坑之旅3
热门文章
- 冥想====》超级右脑
- 2012自学CCNP路由与交换之三网络设备造型及验收
- 中国DevOps应用发展研究 附下载
- 老电脑如何利用云服务器提升性能,把旧电脑变成云电脑?让手机运行大型PC游戏...
- Mysql排序的特性详情
- was服务器配置文件路径,websphere(was)配置文件
- 2022-2028全球与中国氦气压缩机市场现状及未来发展趋势
- 用实际项目分析高并发-抢霸王餐(川味观)
- YAML格式检查与转换
- 【opencv450 Image Processing】Histogram Calculation直方图计算