一、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. Angular 学习笔记 (cdk focus monitor 和一些 focus tabindex 的基础)

    更新 : 2019-12-22 focusInitialElementWhenReady  我们经常会调用到这个方法, 它的逻辑是这样 先看有没有 cdkFocusInitial 有的就 focus ...

  2. linux 命令行 光标移动技巧等

    看一个真正的专家操作命令行绝对是一种很好的体验-光标在单词之间来回穿梭,命令行不同的滚动.在这里强烈建立适应GUI节目的开发者尝试一下在提示符下面工作.但是事情也不是那么简单,还是需要知道“如何去做” ...

  3. 文件流FileStream的读写

    1.FileStream文件流的概念: FileStream 类对文件系统上的文件进行读取.写入.打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道.标准输入和标准输出.读写操作可以指定 ...

  4. C#-Parallel

    using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Li ...

  5. metasploit安卓木马

    metasploit---安卓木马入侵 (仅供学习使用,禁止非法使用) 1.生成木马程序 msfvenom -p android/meterpreter/reverse_tcp LHOST=本机ip ...

  6. 爬虫相关--requests库

    requests的理想:HTTP for Humans 一.八个方法 相比较urllib模块,requests模块要简单很多,但是需要单独安装: 在windows系统下只需要在命令行输入命令 pip ...

  7. HTML标签认识一

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. CSS重排和重绘

    一.什么是重绘Repaint和重排 (回流 reflow) 重绘:当元素的一部分属性发生改变,如外观.背景.颜色等不会引起布局变化,只需要浏览器根据元素的新属性重新绘制 ,使元素呈现新的外观叫做重绘. ...

  9. MACOS 安装mysqlclient 的 Library not loaded错误

    报错场景 >>> import MySQLdb Traceback (most recent call last): File "<stdin>", ...

  10. ArduPilot简介

    源码地址:https://github.com/ArduPilot/ardupilot/ 参考:http://ardupilot.org/dev/docs/learning-the-ardupilot ...