一。概述

BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播。在前向传递中,输入信号从输入层经隐含层处理,直至输出层。每一层的神经元状态只影响下一层神经元状态。如果输出层得不到期望输出,则转入反向传播,根据预测误差调整网络权值和阈值,从而使BP神经网络预测输出不断逼近期望输出。

二。BP神经网络的训练过程包含以下几个步骤:

步骤一:网络初始化。根据输入输出序列确定网络输入层节点数n,隐含层节点数l,输出层节点数m,初始化输入层,隐含层和输出层神经元之间的连接权值,初始化隐含层阈值,输出层阈值,给定学习速率和神经元激励函数。

步骤二:隐含层输出计算。根据输入向量X,输入层和隐含层间连接权值,以及隐含层阈值啊,计算隐含层输出H。

式中,l为隐含层节点数,f为隐含层激励函数,该函数有多种表达形式,本例所选函数为:

步骤三:输出层输出计算。根据隐含层输出H,连接权值和阈值b,计算BP神经网络预测输出O.

步骤四:误差计算。根据网络预测输出O和期望输出Y,计算网络预测误差e。

步骤五:权值更新。根据网络预测误差e更新网络连接权值

为学习速率。

步骤六:阈值更新。根据网络预测误差e更新网络节点阈值a,b.

步骤七:判断算法迭代是否结束,若没有结束,返回步骤二。

三。MATLAB实现

%清空环境变量
clc
clear%导入四类信号
load data1 c1
load data2 c2
load data3 c3
load data4 c4%将四类信号合为一组
data(1:500,:) = c1(1:500,:);
data(501:1000,:) = c2(1:500,:);
data(1001:1500,:) = c3(1:500,:);
data(1501:2000,:) = c4(1:500,:);%输入输出数据
input = data(:,2:25);
output1 = data(:,1);%设定每组输入输出信号
for i = 1:2000switch output1(i)case 1 output(i,:) = [1 0 0 0];case 2output(i,:) = [0 1 0 0];case 3output(i,:) = [0 0 1 0];case 4output(i,:) = [0 0 0 1];end
end%从中随机抽取1500 组数据作为训练数据,500组数据作为预测数据
k = rand(1,2000);
[m,n] = sort(k);input_train = input(n(1:1500),:)';
output_train = input(n(1:1500),:)';
input_test = input(n(1501:2000),:)';
output_test = output(n(1501:2000),:)';%输入数据归一化
[inputn,inputps] = mapminmax(input_train);%网络结构
innum = 24;
midnum = 25;
outnum = 4;%权值阈值初始化
w1 = rands(midnum,innum);
b1 = rands(midnum,1);
w2 = rands(midnum,outnum);
b2 = rands(outnum,1);for ii = 1:20E(ii) = 0; %训练误差for i = 1:1:1500%选择本次训练数据x = inputn(:,i);%隐含层输出for j = 1:1:midnumI(j) = inputn(:,i)'*w1(j,:)'+b1(j);Iout(j) = 1/(1+exp(-I(j)));end%输出层输出yn = w2'*Iout'+b2;%预测误差e = output_train(:,i) - yn;E(ii) = E(ii) + sum(ads(e));%计算w2.b2调整量dw2 = e*Iout;db2 = e';%计算w1,b1调整量for j=1:1:midnumS = 1/(1+exp(-I(j)));FI(j) = S*(1-S);endfor k = 1:1:innumfor j = 1:1:midnumdw1(k,j) = FI(j)*x(k)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));db1(j) = FI(j)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));endend%权值阈值更新w1 = w1_1 + xite*dw1';b1 = b1_1 + xite*db1';w2 = w2_1 + xite*dw2';b2 = b2_1 + xite*db2';%保存结果w1_1 = w1;w2_1 = w2;b1_1 = b1;b2_1 = b2;end
end%BP神经网络分类%输入数据归一化
inputn_test = mapminmax('apply',input_test,inputps);%网络检测
for i = 1:5000for j = 1:1:midnumI(j) = inputn_test(:,i)'*w1(j,:)'+b1(j);Iout(j) = 1/(1+exp(-I(j)));end%预测结果fore(:,i) = w2'*Iout'+b2;
end%类别统计
for i= 1;500output_fore(i) = find(fore(:,i) == max(fore(:,i)));
end%预测误差
error = output_fore - output1(n(1501,2000))';
k = zeros(1:4);%统计误差
for i = 1:500if error(i)~=0[b,c] = max(output_test(:,i));switch ccase 1k(1) = k(1) +1;case 2k(2) = k(2) +1;case 3k(3) = k(3) +1;case 4k(4) = k(4) +1;endend
end%统计正确率
rightridio = (kk - k)./kk

BP神经网络的数据分类(MATHLAB实现)相关推荐

  1. BP 神经网络的数据分类

    BP 神经网络的数据分类--语音特征信号分类 BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播.在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层. 每一层的神 ...

  2. 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码

    基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 文章目录 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 1 蝙蝠算法与BP神经网络分类模型 1.1 蝙 ...

  3. 【BP分类】基于鸟群算法优化BP神经网络实现数据分类附matlab代码

    1 简介 ​BSA 算法优化 BP 神经网络的基本思想是: 利 用 BSA 算法的全局搜索能力, 优化 BP 神经网络初始的权值和阈值, 也就是决策变量, 其中每一组决策变量均包含在鸟群个体所处的空间 ...

  4. 【预测模型-BP分类】基于人工蜂群算法优化BP神经网络实现数据分类附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  5. 【BP分类】基于哈里斯鹰算法优化BP神经网络实现数据分类含Matlab源码

    ​1 简介 2 部分代码 function [fbst, xbst, performance] = hho( objective, d, lmt, n, T, S)%Harris hawks opti ...

  6. 【预测模型-BP分类】基于蝙蝠算法优化BP神经网络实现数据分类附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  7. BP神经网络对鸢尾花进行分类

    题目:BP神经网络分类器 一.实验项目: BP神经网络对鸢尾花进行分类 二.实验目的: 掌握BP神经网络学习算法,利用BP神经网络进行数据分类 三.实验内容: 1.编程实现BP神经网络算法 2.建立三 ...

  8. 详细的“BP神经网络数据分类—语音特征信号分类”代码

    %将语音数据导入matlab软件中 load data1  load data2  load data3  load data4  %为了方便后续神经网络的训练,将语音数据统一合在一个数组中.此时da ...

  9. 机器学习算法-09-深度学习、BP神经网络、Hopfield神经网络、基于数学原理的神经网络、径向基函数RBF(B站一条会说666的咸鱼)

    Deep Learning 深度学习的概念源于人工神经网络的研究,含多隐层的多层感知器就是有一种深度学些的结构 ,深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征的 ...

最新文章

  1. 再见,工资!程序员工资统计平均14404元,网友:又跌了!
  2. 笔记-项目质量管理-质量保证和质量控制(信管网)
  3. Python获取控制台输入
  4. 我是如何学习写一个操作系统(六):进程的调度
  5. Linux命令之 umount -- 卸载文件系统
  6. python 初始化 元组_在Python中重新初始化元组
  7. SpringBoot + ShardingSphere 秒级分库分表!
  8. es 模糊查询_ES系列11:Term-level queries 之 3种模糊查询和terms_set query
  9. 小伙工资取不出来 一查余额负999亿余元 网友:世界第一负翁?
  10. 空指针/0/NULL
  11. vue-router之嵌套路由
  12. SAP License: 发票校验前收货后是否能更改物料价格
  13. 消防信号总线原理_消防安全微视频:可燃气体探测报警系统培训
  14. jquery easyui里datagrid用法记录
  15. Hibernate之分页查询
  16. 385.迷你语法分析器
  17. HTML5系列代码:信纸效果
  18. 程序化广告(二)- 考核指标如CTR/CVR/ROI/ARPU等
  19. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day26】—— Spring框架3
  20. dw2019连接mysql数据库_VS 2019 连接MySQL数据库配置记录

热门文章

  1. (仿古工艺品)床榻与苏29飞机装配图
  2. ICP经营许可证需要多久能够下证
  3. 用C语言实现移位密码加密与解密
  4. Python条件判断
  5. fabs在python中是什么意思_Python fabs() 与 abs() 区别是什么?
  6. 【数据分析框架】AARRR模型的数据指标体系AARRR模型AARRR数据指标总结
  7. 企业如何管理终端软件安装
  8. android高度比例布局,无处安放的AndroidTips:ConstraintLayout的比例布局
  9. linux批量追加内容,利用sed的追加功能批量在文件中追加内容
  10. NKOJ 2522 Sandy的卡片(差分数组+DP)