MATLAB实现智能计算方法实验:实验三 BP神经网络
资源链接
MATLAB实现智能计算方法课程所有实验代码资源链接为:MATLAB实现智能计算方法课程所有实验代码资源
本实验代码和excel文件可在GitHub仓库和gitee仓库中进行下载
实验汇总
MATLAB实现智能计算方法课程所有实验汇总博客链接为:MATLAB实现智能计算方法实验汇总
实验目的
- 通过本次实验,进一步理解多层感知器的基本原理、BP网络的模型结构、BP算法;
- 掌握BP算法的手工计算,并编写代码实现学习过程;
- 掌握MATLAB工具箱中的相关函数,用工具箱实现编程,解决实际问题。
实验内容
利用BP神经网络,解决性别分类问题:
原始数据student.xls,部分数据放入报告中即可;
以身高、体重为输入,性别为输出,设计网络结构(以图的形式放入报告);
手工编码(python或MATLAB),实现对性别的分类计算,并用测试数据验证模型的正确性。
用MATLAB工具箱编程实现模型仿真并用测试数据对性别进行预测。
测试数据1:身高(162cm),体重(56kg),性别(女)。
测试数据2:身高(172cm),体重(75kg),性别(男)。
实验步骤
1. 数据预处理
将原始数据进行处理,性别为“男”设为1,为“女”设为0,应用“=IF(Bi=“男”,1,0)”公式在excel中完成数据预处理的操作,处理后部分数据如下表。
编号 | 性别 | 身高 | 体重 | 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个神经单元的神经网络,网络结构如下图2.1。
图2.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);
执行程序得到最大均方误差曲线如图3.1,预测结果分布如图3.2。
图3.1 最大均方误差曲线
图3.2 预测结果分布
通过图3.1可知共经过了2000次迭代,最终的最大均方误差为0.08左右。通过此网络验证测试样本,得到的结果为0.0096和0.9882,可以判定第一个样本性别为“女”,第二个为“男”,与样本所给结果一致。
4. 工具箱仿真
应用MATLAB工具箱编程实现模型仿真并用测试数据对性别进行预测,程序代码如下:
clear;
clc;
data = xlsread('student.xlsx');
P = data(:, 3 : 4);
T = data(:, 5);
%premnmx(P', T')对P',T'进行归一化处理
[pn, minp, maxp, tn, mint, maxt] = premnmx(P', T');
p1 = pn(:, 1: 260);
t1 = tn(:, 1: 260);
%反归一化还原成原始的数据
pn1 = postmnmx(p1, minp, maxp);
tn1 = postmnmx(t1, mint, maxt);
p = [162 172; 56 75];
t = [0 1];
[p2, minp1, maxp1, t2, mint1, maxt1] = premnmx(p, t);
pn2 = postmnmx(p2, minp1, maxp1);
tn2 = postmnmx(t2, mint1, maxt1);
net=newff(minmax(p1),[2,1],{'tansig','purelin'},'trainrp');
net.trainParam.epochs=2000;
net.trainParam.goal=0.00001;
net.trainparam.lr=0.01;
net=train(net,p1,t1);
%调用matlab神经网络工具箱自带的sim函数得到网络的预测值
y1=sim(net,p1);
tfz=postmnmx(y1,mint,maxt);
tfz1=tfz';
%disp展示变量内容
disp(tfz);
disp(tn1);
temp1=sim(net,p2);
t_tfz=postmnmx(temp1,mint,maxt);
txl1=t_tfz';
disp(t_tfz);
disp(tn2);
y_t1=temp1(1,:);
%计算相对逼近误差
error1=y1-t1(1,:);
%计算相对预测误差
error3=y_t1-t2(1,:);
figure;
%绘制预测误差曲线
plot(1:260,error1,'r');
title("相对逼近误差");
figure;
plot(1:2,error3,'b');
title("相对预测误差");
执行程序,训练样本相对误差如图4.1,测试样本相对误差如图4.2,误差曲线如图4.3。
图4.1 相对逼近误差
图4.2 相对预测误差
图4.3 误差曲线
观察图4.3,可知迭代次数为2000,最大均方误差为0.28799,代入测试样本得到的结果为-0.0236和0.9995,判定第一个样本性别为“女”,第二个为“男”,与样本所给结果一致。
MATLAB实现智能计算方法实验:实验三 BP神经网络相关推荐
- MATLAB实现智能计算方法实验汇总
MATLAB实现智能计算方法实验汇总 代码资源链接 [实验一 模糊聚类分析](https://blog.csdn.net/qq_36949278/article/details/121051493) ...
- MATLAB实现智能计算方法实验:实验五 Hopfield神经网络
资源链接 MATLAB实现智能计算方法课程所有实验代码资源链接为:MATLAB实现智能计算方法课程所有实验代码资源 实验汇总 MATLAB实现智能计算方法课程所有实验汇总博客链接为:MATLAB实现智 ...
- MATLAB实现智能计算方法实验:实验一 模糊聚类分析
资源链接 MATLAB实现智能计算方法课程所有实验代码资源链接为:MATLAB实现智能计算方法课程所有实验代码资源 实验汇总 MATLAB实现智能计算方法课程所有实验汇总博客链接为:MATLAB实现智 ...
- gadecod matlab,【预测模型】基于遗传算法优化BP神经网络房价预测matlab源码
一.简介 1 遗传算法概述 遗传算法(Genetic Algorithm,GA)是进化计算的一部分,是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法 ...
- 【Matlab风电功率预测】遗传算法优化BP神经网络风电功率预测【含源码 760期】
一.代码运行视频(哔哩哔哩) [Matlab风电功率预测]遗传算法优化BP神经网络风电功率预测[含源码 760期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...
- Matlab:基于Matlab实现人工智能算法应用的简介(BP神经网络算法NN、SOFM神经网络)、案例应用(基于Matlab的GUI的方式创建/训练/预测神经网络)之详细攻略
Matlab:基于Matlab实现人工智能算法应用的简介(BP神经网络算法NN.SOFM神经网络).案例应用(基于Matlab的GUI的方式创建/训练/预测神经网络)之详细攻略 目录
- 回归预测 | MATLAB实现DBN-BP深度置信网络结合BP神经网络多输入单输出回归预测
回归预测 | MATLAB实现DBN-BP深度置信网络结合BP神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现DBN-BP深度置信网络结合BP神经网络多输入单输出回归预测 预测效果 ...
- bp神经网络实验报告结论,bp神经网络实验报告
bp神经网络 BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络 ...
- matlab 植物生长算法,基于模拟植物生长的BP神经网络学习算法研究
第29卷第3期 2 8年6月 JOURNAL OF DALIAN UNIVERSITY VOL29 N住3 Jun. 2 8 基于模拟植物生长的BP神经网络学习算法研究李彤*,于江波,温钰 (大连大学 ...
最新文章
- Ubuntu 12.04 下安装 VirtualBox 及虚拟机winxp的安装
- double a=25/2
- mochiweb 源码阅读(八)
- python sqlite3加密_sqlite3加密 - kjpioo的个人空间 - OSCHINA - 中文开源技术交流社区...
- 「 每日一练,快乐水题 」917. 仅仅反转字母
- 有指针为何还要STL迭代器
- 网络爬虫--2.HTTP和HTTPS
- 一文读懂Java七大垃圾回收器
- 你说话的方式,决定了你的命运!
- controlleradvice 参数_Spring mvc中@ModelAttribute和@ControllerAdvice使用
- Flink 尚硅谷学习笔记
- python3GUI--在线小说播放器By:PyQt5(附ui源码)
- 【OR】YALMIP Bilevel规划
- 邮件服务器搭建安装部署文档
- c语言仿ce内存搜索工 源代码_CE的AOB_scan功能源码内存搜索特征码
- 学会这5招,快速清理c盘!
- 日常工作记录:安卓运行时出现的Cause: Dex cannot parse version 52 byte code.问题
- Ubuntu 20.4 美化桌面、美化引导界面、Mac 既视感
- 华为服务器图片无法显示,服务器的图片无法显示
- 怎样删除pdf中的多页?pdf如何选择其中几页?pdf文档可以删除某一页
热门文章
- 【附源码】计算机毕业设计SSM期刊在线投稿系统
- RT-Thread使用DP83640 实现IEEE1588 协议笔记
- 【每日新闻】IDC:国产手机品牌在印度拿下66%的市场份额
- 2022CCPC广州 L. Station of Fate gym104053L
- Field usersMapper in com.example.test.impl.UsersServiceImpl required a bean of type ‘com.example.tes
- html消除图之间间距,html表格间距怎么取消 html 表格行之间的间距怎么设置
- 计算机英语wheel是什么意思,wheel是什么意思
- Java——entity(实体类)的写法规范
- SLIC算法理解(仅为个人笔记)
- 机器学习:simple linear iterative clustering (SLIC) 算法