神经网络的GUI应用【神经网络二十一】

MATLAB神经网络工具箱为用户提供了丰富的函数接口,这些函数是进行神经网络仿真程序设计的基础工具,用户可以简单地将它们组合使用,也可以按照自己的构想修改神经网络的结构,甚至设计自定义的神经网络。
神经网络的应用是非常广泛的,用户遍及各行各业。在神经网络的用户群中,存在大量不熟悉MATLAB程序设计和工具箱函数调用规则的用户。对于他们来说,很难迅速达到一个MATLAB程序开发者的水平,因此仅仅利用神经网络工具箱的函数接口,很难让大部分用户都能方便、快捷地学习并有效利用神经网络。
因此,MATLAB R2011b版本之后的神经网络工具箱提供了强大的图形用户界面(Graphical User Interface,GUI)支持,从而使用户在GUI的基础上,通过与计算机的交互操作就能使用神经网络进行仿真,大大降低了神经网络的使用门槛。

神经网络工具的GUI应用

假设有6个坐标点,分别属于两个类别,要训练一个神经网络模型,在出现新坐标点时,网络可以判断新坐标点的类别。坐标点的位置和所属类别如表10-1所示。
在这里插入图片描述

分类/聚类工具的GUI应用

神经网络的聚类工具能够收集、建立和训练神经网络,并利用可视化工具来评价神经网络的效果。在nctool工具中所指的分类/聚类更偏向于聚类,是指只有输入样本,没有期望输出(目标向量)的分类问题。系统进行分类的依据是输入样本数据之间的相似性,用自组织映射(Self-Organizing Map,SOM)神经网络的形式求解。例如,搜集相关数据,分析大众消费行为的相似性,将消费者划分为不同的人群,以实现细分市场的划分。
MATLAB使用SOM神经网络进行聚类运算,SOM神经网络包括一个可以将任意维度的数据分成若干类的竞争层,类别的数量的最大值等于竞争层神经元个数。竞争层神经元按照二维拓扑结构排列,使竞争层能代表与样本数据集近似的分布。
nctool内部采用selforgmap函数实现聚类运算,使用SOM批训练算法,涉及的函数有trainbu、learnsomb。
在MATLAB命令窗口中输入nctool并按Enter键,可以打开神经网络聚类工具窗口,如图10-37所示。
使用聚类工具箱解决一个简单的聚类问题。
定义单位圆上的6个坐标点,位置如下:

>> a=[cos(15*pi/180),sin(15*pi/180);cos(75*pi/180),sin(75*pi/180);cos(105*pi/180), ...
sin(105*pi/180);cos(-15*pi/180),sin(-15*pi/180);cos(195*pi/180),..
sin(195*pi/180);cos(165*pi/180),sin(165*pi/180)];
>> a=a'
a =
    0.9659    0.2588   -0.2588    0.9659   -0.9659   -0.9659
    0.2588    0.9659    0.9659   -0.2588   -0.2588    0.2588
>> t=0:.2:2*pi+.2;
>> plot(cos(t),sin(t));
>> axis([-1.2 1.2,-1.2 1.2]);
>> axis equal;
>> hold on;
>> plot(a(1,:),a(2,:),'rd');

在这里插入图片描述
单击Simple Script按钮和Advanced Script按钮可以将神经网络保存为命令脚本的形式。
在此将神经网络保存为M10_2fun.m脚本文件,然后在脚本文件中添加变量a的定义语句及测试代码。完整的代码如下:

>> % Solve a Clustering Problem with a Self-Organizing Map
% Script generated by Neural Clustering app
% Created 02-Apr-2018 20:31:13
%
% This script assumes these variables are defined:
%
%a - input data
%自定义语句
a =[0.9659    0.2588   -0.2588    0.9659   -0.9659   -0.9659;...
0.2588    0.9659    0.9659   -0.2588   -0.2588    0.2588];
inputs=a;
%Create a Self-Organizing Map
dimension1 = 2;
dimension2 = 2;
net = selforgmap([dimension1 dimension2]);
%Train the Network
[net,tr] = train(net,inputs);
%Test the Network

模式识别工具的GUI应用

模式识别又称为模式分类,广义的模式识别包括有监督的识别和无监督的识别,分别对应有目标数据和无目标数据的训练过程,前者的训练数据所属类别未知,而后者的训练数据所属类别已知。神经网络模式识别工具中所指的模式识别主要是后者,即有监督的分类,对于无监督的分类问题,可以使用神经网络分类/聚类工具加以解决。
在模式识别问题中,输入数据将被划分为事先规定好的某个类别。类别的数量是确定的,每个输入样本最终都会被归为预定好的某个类别中。神经网络模式识别工具可以用来收集数据,创建和训练神经网络,并用均方误差(MSE)和混淆矩阵进行评价。系统使用一个(不包括输入层和输出层)前向神经网络,它的隐含层和输出层都使用sigmoid函数,训练时采用量化连续梯度训练函数,默认为trainscg函数。
在MATLAB命令窗口中输入:

>> nprtool

按Enter键,可以得到如图10-50所示的数据拟合GUI界面。

时间序列工具的GUI应用

自然界中的数据往往会随着时间的推移发生变化。时间序列就是对一组统计数据按发生时间的先后顺序排列。时间序列中数据的取值依赖于时间的变化,邻近时刻的数值分布存在一定的规律性,从而在整体上形成某种趋势或周期性变化的规律,因此,可以根据已知数据预测未知数据。但每个数据点的取值又伴有随机性,无法完全由历史数据推演得到。
时间序列分析可以借助许多数学工具,如滑动平均模型、二次滑动平均模型等。在人工智能领域,各种智能算法也可以应用于时间序列分析中。预测可以被视为一种动态滤波问题,在神经网络中,可以用带抽头延迟线的动态神经网络来处理非线性滤波和预测问题。
MATLAB神经网络工具箱为用户提供了时间序列工具ntstool,它可以解决三类时间序列问题:有外部输入的非线性自回归问题;无外部输入的非线性自回归问题;时间延迟问题。
有外部输入的非线性自回归问题。在此采用MATLAB自带的实例数据,即Fluid Flow in Pipe。数据存放在value_dataset.mat文件中,包含两个变量。
· ValveInputs:1×1801元胞数组,元胞数组中的元素表示阀门打开时百分比的标量。
· ValveTargets:1×1801元胞数组,元胞数组中的元素表示流体的流速。显然,由于流体的流动性,流体在管道中的流速与前一时刻的流速有关。而阀门打开程度的增大(减小)会促进(抑制)流体的流动。因此,这是一个典型的NARX问题。
(1)在命令窗口中打开神经网络时间序列工具对话框,在对话框的右侧选中Nonlinear Autoregressive with External(Exogenous)Input单选按钮。
(2)单击Next按钮,进入Select Data步骤。单击Load Example Data Set按钮,弹出Time Series Data Set Chooser对话框,在该对话框左侧的Select a data set列表中选择最后一项Fluid Flow in Pipe,单击Import按钮导入,
无外部输入的非线性自回归问题。股票的涨落是一个典型的时间序列问题,股价随着时间的推移不断波动,但同时受企业业绩、国家政策等因素的影响。此处忽略其他因素,将股票价格视为只与自身历史值有关的、无外部输入的时间序列问题。(实例数据为第7章的股价数据)
(1)在命令窗口中输入对应的命令打开时间序列工具窗口,在窗口的右侧选择NonLinear Autoregressive:

>> load stock2
>> s1=stock2(1:140);
>> s2=stock2(141:280);
>> size(stock2)
ans =
   280     1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张叔zhangshu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值