一、RBF神经网络

  1. RBF神经网络概述

    • 径向基函数神经网络
    • 与 BP 神经网络的区别在于训练过程——其参数初始化具有一定方法,并非随机,隐含层的末尾使用了径向基函数,它的输出经过加权和得到 LW2.1" role="presentation">LW2.1LW2.1

  1. RBF神经网络重点函数介绍

    • newrbe()——创建精确的径向基网络

      • net = newrbe(P , T , Spread)
      • P: 输入向量
      • T:输出向量
      • Spread:径向基的扩展速度
  2. 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)

  1. 其余函数描述和问题描述

二、GRNN、PNN神经网络

  1. GRNN神经网络概述

    • 广义回归神经网络

    • 输入层和隐含层与 RBF 神经网络一致,这里的 LW2.1" role="presentation">LW2.1LW2.1 直接由输出矩阵代替,并在隐含层与输出层之间和激活函数进行点乘

  1. PNN神经网络概述

    • 概率神经网络

    • 输入层和隐含层与RBF神经网络一致,不同点是最后的输出环节使用了一个竞争函数

  1. GRNN、PNN神经网络重点函数介绍

    • newgrnn()——创建广义回归神经网络

      • net = newgrnn(P,T)
      • P,T 和RBF神经网络一致
    • newpnn()——创建概率神经网络
      • net = newpnn(P,T)
      • P,T 同上
  2. 代码使用实例

%% I. 清空环境变量

clear all

clc

%% II. 训练集/测试集产生

%%

% 1. 导入数据

load iris_data.mat

%%

% 2 随机产生训练集和测试集

P_train = [];

T_train = [];

P_test = [];

T_test = [];

for i = 1:3

temp_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:4

for j = i:4

p_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:10

accuracy_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预测值’)

RBF、GRNN 和 PNN 神经网络在Matlab中的用法的更多相关文章

  1. 向量与矩阵的范数及其在matlab中的用法(norm)

    一.常数向量范数 \(L_0\) 范数 \(\Vert x \Vert _0\overset{def}=\)向量中非零元素的个数 其在matlab中的用法: sum( x(:) ~= 0 ) \(L_ ...

  2. Matlab中imagesc用法

    来源:https://ww2.mathworks.cn/help/matlab/ref/imagesc.html?searchHighlight=imagesc&s_tid=doc_srcht ...

  3. interp1一维数据插值在matlab中的用法

    转载:https://ww2.mathworks.cn/help/matlab/ref/interp1.html?s_tid=srchtitle#btwp6lt-2_1 interp1 一维数据插值( ...

  4. matlab中set用法

    来源:https://www.cnblogs.com/sddai/p/5467500.html 1.MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值.例如,Lin ...

  5. Matlab中ismember用法

    >> a = magic(3) a = 8 1 6 3 5 7 4 9 2 >> ismember(a,3) ans = 0 0 0 1 0 0 0 0 0 >> ...

  6. 详细MATLAB 中BP神经网络算法的实现

    MATLAB 中BP神经网络算法的实现 BP神经网络算法提供了一种普遍并且实用的方法从样例中学习值为实数.离散值或者向量的函数,这里就简单介绍一下如何用MATLAB编程实现该算法. 具体步骤   这里 ...

  7. bp神经网络及matlab实现

    本文主要内容包含: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 . 第0节.引例  本文以Fisher的Iris数据集 ...

  8. MATLAB中绘制质点轨迹动图并保存成GIF

    工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t) ...

  9. matlab 中 eps 的分析

    eps(a)是|a|与大于|a|的最小的浮点数之间的距离,距离越小表示精度越高.默认a=1: 这里直接在matlab中输入:eps == eps(1)(true). 我们知道浮点数其实是离散的,有限的 ...

随机推荐

  1. UOJ #7 NOI2014购票(点分治+cdq分治+斜率优化+动态规划)

    重写一遍很久以前写过的题. 考虑链上的问题.容易想到设f[i]为i到1的最少购票费用,转移有f[i]=min{f[j]+(dep[i]-dep[j])*p[i]+q[i]} (dep[i]-dep[j ...

  2. HTML中的标题<h1>标签的用法!

    在HTML中,<h1>标签是命名标题的元素,并且在网页中起到了很重要的作用,但是不要只是因为想要弄成黑粗字体就使用<h1>标题标签这样不好.如果说你还想要做完网站后需要进一步做 ...

  3. vue -- 数组过滤 filter (vue 表格)

    如下图:  左边表格滑动滚轮,可以自动赋值右边表格:   现在是后台只有一个接口,把整个页面的数据全部返回出来了, 左边表格滑动到每一项时显示右边表格内容,但是需要code相同:   问题: 右边表格 ...

  4. phpstom激活

    phpstom官网:https://www.jetbrains.com/phpstorm/download 激活方法:激活时选择License server 填入http://idea.imsxm.c ...

  5. 50个Sql语句实战

    /* 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句. 问题及描述:--1.学生表Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生 ...

  6. select加锁分析(Mysql)

    [原创]惊!史上最全的select加锁分析(Mysql) 前言 大家在面试中有没遇到面试官问你下面六句Sql的区别呢 select * from table where id = ? select * ...

  7. 关于MySQL中的锁机制详解

    锁概述 MySQL的锁机制,就是数据库为了保证数据的一致性而设计的面对并发场景的一种规则. 最显著的特点是不同的存储引擎支持不同的锁机制,InnoDB支持行锁和表锁,MyISAM支持表锁. 表锁就是把 ...

  8. 如何在CentOS上搭建gitlab服务器

    步骤 1. 打开HTTP和SSH访问 1.1 安装 sudo yum install -y curl policycoreutils-python openssh-server 1.2 开启SSH 这 ...

  9. lombok自定义扩展实践

    lombok是一款能够在java代码编译阶段改变代码的插件.比如生成setter和getter方法,生成log类变量等,能够简化一些特定的模版式代码.本文将以实现一个基于特定注解生成日志代码的方式,简 ...

  10. 实战jvisualvm

    在上一次[https://www.cnblogs.com/webor2006/p/10629889.html]已经编写了一个能在堆空间出现内存溢出的代码,先来回顾一下: 其中咱们给JVM配置了如下参数 ...