BP


%% I. 清空环境变量
clear all
clc%% II. 训练集/测试集产生
%%
% 1. 导入数据
load spectra_data.mat%%
% 2. 随机产生训练集和测试集
temp = randperm(size(NIR,1));
% 训练集——50个样本
P_train = NIR(temp(1:50),:)';
T_train = octane(temp(1:50),:)';
% 测试集——10个样本
P_test = NIR(temp(51:end),:)';
T_test = octane(temp(51:end),:)';
N = size(P_test,2);%% III. 数据归一化
[p_train, ps_input] = mapminmax(P_train,0,1);
p_test = mapminmax('apply',P_test,ps_input);[t_train, ps_output] = mapminmax(T_train,0,1);%% IV. BP神经网络创建、训练及仿真测试
%%
% 1. 创建网络
net = newff(p_train,t_train,9);%%
% 2. 设置训练参数
net.trainParam.epochs = 1000;%迭代次数
net.trainParam.goal = 1e-3;%学习目标
net.trainParam.lr = 0.01;%学习率%%
% 3. 训练网络
net = train(net,p_train,t_train);%%
% 4. 仿真测试
t_sim = sim(net,p_test);%%
% 5. 数据反归一化
T_sim = mapminmax('reverse',t_sim,ps_output);%% V. 性能评价
%%
% 1. 相对误差error
error = abs(T_sim - T_test)./T_test;%%
% 2. 决定系数R^2
R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2)); %%
% 3. 结果对比
result = [T_test' T_sim' error'];%% VI. 绘图
figure
plot(1:N,T_test,'b:*',1:N,T_sim,'r-o')
legend('真实值','预测值')
xlabel('预测样本')
ylabel('辛烷值')
string = {'测试集辛烷值含量预测结果对比';['R^2=' num2str(R2)]};
title(string)

RBF


%% I. 清空环境变量
clear all
clc%% II. 训练集/测试集产生
%%
% 1. 导入数据
load spectra_data.mat%%
% 2. 随机产生训练集和测试集
temp = randperm(size(NIR,1));
% 训练集——50个样本
P_train = NIR(temp(1:50),:)';
T_train = octane(temp(1:50),:)';
% 测试集——10个样本
P_test = NIR(temp(51:end),:)';
T_test = octane(temp(51:end),:)';
N = size(P_test,2);%% III. RBF神经网络创建及仿真测试
%%
% 1. 创建网络
net = newrbe(P_train,T_train,30);%%
% 2. 仿真测试
T_sim = sim(net,P_test);%% IV. 性能评价
%%
% 1. 相对误差error
error = abs(T_sim - T_test)./T_test;%%
% 2. 决定系数R^2
R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2)); %%
% 3. 结果对比
result = [T_test' T_sim' error']%% V. 绘图
figure
plot(1:N,T_test,'b:*',1:N,T_sim,'r-o')
legend('真实值','预测值')
xlabel('预测样本')
ylabel('辛烷值')
string = {'测试集辛烷值含量预测结果对比';['R^2=' num2str(R2)]};
title(string)

GRNN和PNN


%% I. 清空环境变量
clear all
clc%% II. 训练集/测试集产生
%%
% 1. 导入数据
load iris_data.mat%%
% 2 随机产生训练集和测试集
P_train = [];
T_train = [];
P_test = [];
T_test = [];
for i = 1:3temp_input = features((i-1)*50+1:i*50,:);temp_output = classes((i-1)*50+1:i*50,:);n = randperm(50);% 训练集——120个样本P_train = [P_train temp_input(n(1:40),:)'];T_train = [T_train temp_output(n(1:40),:)'];% 测试集——30个样本P_test = [P_test temp_input(n(41:50),:)'];T_test = [T_test temp_output(n(41:50),:)'];
end%% III. 模型建立
result_grnn = [];
result_pnn = [];
time_grnn = [];
time_pnn = [];
for i = 1:4for j = i:4p_train = P_train(i:j,:);p_test = P_test(i:j,:);%% % 1. GRNN创建及仿真测试t = cputime;% 创建网络net_grnn = newgrnn(p_train,T_train);% 仿真测试t_sim_grnn = sim(net_grnn,p_test);T_sim_grnn = round(t_sim_grnn);t = cputime - t;time_grnn = [time_grnn t];result_grnn = [result_grnn T_sim_grnn'];%%% 2. PNN创建及仿真测试t = cputime;Tc_train = ind2vec(T_train);% 创建网络net_pnn = newpnn(p_train,Tc_train);% 仿真测试Tc_test = ind2vec(T_test);t_sim_pnn = sim(net_pnn,p_test);T_sim_pnn = vec2ind(t_sim_pnn);t = cputime - t;time_pnn = [time_pnn t];result_pnn = [result_pnn T_sim_pnn'];end
end%% IV. 性能评价
%%
% 1. 正确率accuracy
accuracy_grnn = [];
accuracy_pnn = [];
time = [];
for i = 1:10accuracy_1 = length(find(result_grnn(:,i) == T_test'))/length(T_test);accuracy_2 = length(find(result_pnn(:,i) == T_test'))/length(T_test);accuracy_grnn = [accuracy_grnn accuracy_1];accuracy_pnn = [accuracy_pnn accuracy_2];
end%%
% 2. 结果对比
result = [T_test' result_grnn result_pnn]
accuracy = [accuracy_grnn;accuracy_pnn]
time = [time_grnn;time_pnn]%% V. 绘图
figure(1)
plot(1:30,T_test,'bo',1:30,result_grnn(:,4),'r-*',1:30,result_pnn(:,4),'k:^')
grid on
xlabel('测试集样本编号')
ylabel('测试集样本类别')
string = {'测试集预测结果对比(GRNN vs PNN)';['正确率:' num2str(accuracy_grnn(4)*100) '%(GRNN) vs ' num2str(accuracy_pnn(4)*100) '%(PNN)']};
title(string)
legend('真实值','GRNN预测值','PNN预测值')
figure(2)
plot(1:10,accuracy(1,:),'r-*',1:10,accuracy(2,:),'b:o')
grid on
xlabel('模型编号')
ylabel('测试集正确率')
title('10个模型的测试集正确率对比(GRNN vs PNN)')
legend('GRNN','PNN')
figure(3)
plot(1:10,time(1,:),'r-*',1:10,time(2,:),'b:o')
grid on
xlabel('模型编号')
ylabel('运行时间(s)')
title('10个模型的运行时间对比(GRNN vs PNN)')
legend('GRNN','PNN')

BP,RBF,GRNN和PNN神经网络相关推荐

  1. RBF、GRNN和PNN神经网络的深入浅出

    1.与BP神经网络相比,RBF.GRNN和PNN神经网络有什么特别之处? 相比最经典BP神经网络(Backpropagation neural networks,误差是反向传播,而输入到输出是前向传播 ...

  2. MATLAB机器学习系列-5 RBF、GRNN和PNN神经网络原理及其例子代码

    RBF(径向基神经网络) GRNN广义神经网络 PNN概率神经网络 RBF算例实现(回归) 数据集 % 1. 导入数据 load spectra_data.mat NIR输入,octane输出 %% ...

  3. 第四课 RBF、GRNN和PNN神经网络

    1 RBF神经网络 VS BP神经网络 径向基(radial basis functions,RBF)函数网络是以径向基函数为激活函数的人工神经网络,是一种线性组合. RBF函数: RBF和BP同一个 ...

  4. 分别使用BP/RBF/GRNN神经网络识别航迹异常matlab仿真

    目录 一.理论基础 1.1基于BP神经网络的识别 1.2基于RBF神经网络的识别 1.3基于GRNN神经网络的识别 二.核心程序 三.仿真测试结果 作者ID :fpga和matlab CSDN主页:h ...

  5. GRNN和PNN神经网络简介与MATLAB实践

    目录 GRNN(广义回归神经网络) PNN(概率神经网络) RBF.GRNN.PNN总结对比 MATLAB实例:鸢尾花种类识别 GRNN(广义回归神经网络)和PNN(概率神经网络),与RBF非常的相似 ...

  6. 神经网络学习笔记(二)GRNN广义回归神经网络

    广义回归神经网络(GRNN) 广义回归神经网络是径向基神经网络的一种,GRNN具有很强的非线性映射能力和学习速度,比RBF具有更强的优势,网络最后普收敛于样本量集聚较多的优化回归,样本数据少时,预测效 ...

  7. GRNN广义回归神经网络

    广义回归神经网络(GRNN) 广义回归神经网络是径向基神经网络的一种,GRNN具有很强的非线性映射能力和学习速度,比RBF具有更强的优势,网络最后普收敛于样本量集聚较多的优化回归,样本数据少时,预测效 ...

  8. RBF神经网络、GRNN广义回归神经网络、PNN概率神经网络

    RBF神经网络介绍 RBF神经网络能够逼近任意的非线性函数 RBF可以处理系统内部难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近.时间序列分析.数据分类.模式 ...

  9. MAT之GRNN/PNN:基于GRNN、PNN两神经网络实现并比较鸢尾花(iris数据集)种类识别正确率、各个模型运行时间对比

    MAT之GRNN/PNN:基于GRNN.PNN两神经网络实现并比较鸢尾花(iris数据集)种类识别正确率.各个模型运行时间对比 目录 输出结果 实现代码 输出结果 实现代码 load iris_dat ...

最新文章

  1. 【 MATLAB 】基本序列运算及其MATLAB的等效表示
  2. 精品软件 推荐 ACPsoft PDF Converter 免费的多功能 PDF 转换器
  3. 785. Is Graph Bipartite? 判断二分图
  4. Allegro PCB Design GXL (legacy) 由零散的对象构成一个Shape
  5. 博客园中的源代码格式显示
  6. 分号是不是c语言的一部分,问什么C程序里总是提示缺少分号;,而明明有分号?...
  7. mongoose 批量修改字段_WordPress图片路径批量替换方法
  8. python的交互式解释器_python3.4.1解释器python交互式图形编程实例(三)
  9. php默认语法,php语法基本规则
  10. drools的可升级读写锁探究
  11. 老男孩第31期杨海学习Linux决心书
  12. libtool: Version mismatch error. This is libtool 2.4.6, but the definition of this LT_INIT
  13. 华为网络设备-NAT实验
  14. Rockchip平台DDR调试排查手段
  15. Oracle 11g用exp无法导出空表的处理方法
  16. MySQL数据库期末考试试题及参考答案(08)
  17. 卸载的软件电脑重启后又出现了,怎么办?
  18. 各种滤波器的设计实现
  19. ansible常用模块 -- fial模块 -- 自定义消息失败
  20. Unity3D 中 Generic 动画导入设置和 Root Motion 之间的关系

热门文章

  1. 无法打开计算机上的event log服务,Win7电脑Windows Event Log服务无法启动错误1747的修复教程...
  2. 预测杭州五一黄金周的旅游出行人数
  3. C++ 类(构造函数的成员初始化列表)
  4. 移动端 - 搜索组件(search-input篇)
  5. app支付宝支付沙箱环境不会掉起支付宝支付。
  6. 世界领先的电动汽车国际标准 一 ISO 15118全系列
  7. python docx设置标题中文字体rPr.rFonts.set(qn(‘w:eastAsia‘),u‘黑体‘),报错‘NoneType‘ object has no attribute ‘set‘
  8. 360删除、修改注册表问题
  9. linux常用命令备忘录
  10. 使用http的asp.net项目接入https的CAS单点登录系统