一、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. hdu.. 基础二分的精度问题

    #include<stdio.h>#include<iostream>using namespace std;double f(double x){ return 8*x*x* ...

  2. App功能测试点总结

    1.手机操作系统android(谷歌).ios(苹果).Windows phone(微软).Symbian(诺基亚).BlackBerry OS(黑莓).windows mobile(微软),目前主流 ...

  3. html启动本地.exe文件

    之前没有了解这个内容,还是一个小伙伴在面试中遇到的一个题目,感觉挺有意思就研究了一下这个东西到底是怎么用的.搜了一下解决方法,是添加注册表,自己运行了可以使用 第一步:首先打开注册表,方法是 win+ ...

  4. 基于【 bug解决】一 || mysql的ONLY_FULL_GROUP_BY导致的sql语句错误

    一.Mysql错误: In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated ...

  5. ES6-promise实现异步请求

    一.Promise是什么 简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果. ES6规定,Promise对象是一个构造函数,用来生成Promise实例.Promise构 ...

  6. Integer和int踩过的坑

    在做SSM项目时发现一个有趣的bug,在这里记录一下. 数据库表如下: 实体类:grade字段初始设定为int类型 在用mybatis对第三条数据进行修改时,希望赋值的更改,未赋值的不更改,测试运行 ...

  7. linux 命令 wc

    语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. (1) 统 ...

  8. JAVA笔记整理(十),JAVA中的File

    File类提供对针对目录和文件的读写改等一系列操作方法 创建: public class FileDemo01 { public static void main(String[] args) { t ...

  9. 在Linux中安装ASPNET.Core3.0运行时

    # 以下示例适用于x64位runtime v3.0.0 mkdir /runtimes cd /runtimes wget https://download.visualstudio.microsof ...

  10. jsx的本质

    jsx语法 1.所有html标签他都支持        <div></div> 2.大括号里面可以引入js变量 或者 表达式       {name || ''} 3.可以做判 ...