《MATLAB 神经网络43个案例分析》:第21章 自组织竞争网络在模式分类中的应用—患者癌症发病预测

《MATLAB 神经网络43个案例分析》:第21章 自组织竞争网络在模式分类中的应用—患者癌症发病预测

1. 前言

《MATLAB 神经网络43个案例分析》是MATLAB技术论坛(www.matlabsky.com)策划,由王小川老师主导,2013年北京航空航天大学出版社出版的关于MATLAB为工具的一本MATLAB实例教学书籍,是在《MATLAB神经网络30个案例分析》的基础上修改、补充而成的,秉承着“理论讲解—案例分析—应用扩展”这一特色,帮助读者更加直观、生动地学习神经网络。

《MATLAB神经网络43个案例分析》共有43章,内容涵盖常见的神经网络(BP、RBF、SOM、Hopfield、Elman、LVQ、Kohonen、GRNN、NARX等)以及相关智能算法(SVM、决策树、随机森林、极限学习机等)。同时,部分章节也涉及了常见的优化算法(遗传算法、蚁群算法等)与神经网络的结合问题。此外,《MATLAB神经网络43个案例分析》还介绍了MATLAB R2012b中神经网络工具箱的新增功能与特性,如神经网络并行计算、定制神经网络、神经网络高效编程等。

近年来随着人工智能研究的兴起,神经网络这个相关方向也迎来了又一阵研究热潮,由于其在信号处理领域中的不俗表现,神经网络方法也在不断深入应用到语音和图像方向的各种应用当中,本文结合书中案例,对其进行仿真实现,也算是进行一次重新学习,希望可以温故知新,加强并提升自己对神经网络这一方法在各领域中应用的理解与实践。自己正好在多抓鱼上入手了这本书,下面开始进行仿真示例,主要以介绍各章节中源码应用示例为主,本文主要基于MATLAB2015b(32位)平台仿真实现,这是本书第二十一章自组织竞争网络在模式分类中的应用实例,话不多说,开始!

2. MATLAB 仿真示例

打开MATLAB,点击“主页”,点击“打开”,找到示例文件
在这里插入图片描述
选中chapter21.m,点击“打开”

chapter21.m源码如下:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:单层竞争神经网络的数据分类—患者癌症发病预测
%环境:Win7,Matlab2015b
%Modi: C.S
%时间:2022-06-18
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%% Matlab神经网络43个案例分析

% 单层竞争神经网络的数据分类—患者癌症发病预测
% by 王小川(@王小川_matlab)
% http://www.matlabsky.com
% Email:sina363@163.com
% http://weibo.com/hgsz2003
 
%% 清空环境变量
clc
clear
tic
%% 录入输入数据
% 载入数据并将数据分成训练和预测两类
load gene.mat;
data=gene;
P=data(1:40,:);
T=data(41:60,:);

% 转置后符合神经网络的输入格式
P=P';
T=T';
% 取输入元素的最大值和最小值Q:
Q=minmax(P);

%% 网络建立和训练
% 利用newc( )命令建立竞争网络:2代表竞争层的神经元个数,也就是要分类的个数。0.1代表学习速率。
net=newc(Q,2,0.1)

% 初始化网络及设定网络参数:
net=init(net);
net.trainparam.epochs=20;
% 训练网络:
net=train(net,P);


%% 网络的效果验证

% 将原数据回带,测试网络效果:
a=sim(net,P);
ac=vec2ind(a)

% 这里使用了变换函数vec2ind(),用于将单值向量组变换成下标向量。其调用的格式为:
%  ind=vec2ind(vec)
% 其中,
% vec:为m行n列的向量矩阵x,x中的每个列向量i,除包含一个1外,其余元素均为0% ind:为n个元素值为1所在的行下标值构成的一个行向量。



%% 网络作分类的预测
% 下面将后20个数据带入神经网络模型中,观察网络输出:
% sim( )来做网络仿真
Y=sim(net,T)
yc=vec2ind(Y)
toc

添加完毕,点击“运行”,开始仿真,输出仿真结果如下:

net =
    Neural Network
              name: 'Custom Neural Network'
          userdata: (your custom info)
    dimensions:
         numInputs: 1
         numLayers: 1
        numOutputs: 1
    numInputDelays: 0
    numLayerDelays: 0
 numFeedbackDelays: 0
 numWeightElements: 230
        sampleTime: 1
    connections:
       biasConnect: true
      inputConnect: true
      layerConnect: false
     outputConnect: true
    subobjects:
             input: Equivalent to inputs{
    
    1}
            output: Equivalent to outputs{
    
    1}
            inputs: {
    
    1x1 cell array of 1 input}
            layers: {
    
    1x1 cell array of 1 layer}
           outputs: {
    
    1x1 cell array of 1 output}
            biases: {
    
    1x1 cell array of 1 bias}
      inputWeights: {
    
    1x1 cell array of 1 weight}
      layerWeights: {
    
    1x1 cell array of 0 weights}
    functions:
          adaptFcn: 'adaptwb'
        adaptParam: (none)
          derivFcn: 'defaultderiv'
         divideFcn: (none)
       divideParam: (none)
        divideMode: 'sample'
           initFcn: 'initlay'
        performFcn: 'mse'
      performParam: .regularization, .normalization
          plotFcns: {
    
    }
        plotParams: {
    
    1x0 cell array of 0 params}
          trainFcn: 'trainru'
        trainParam: .showWindow, .showCommandLine, .show, .epochs,
                    .time
    weight and bias values:
                IW: {
    
    1x1 cell} containing 1 input weight matrix
                LW: {
    
    1x1 cell} containing 0 layer weight matrices
                 b: {
    
    1x1 cell} containing 1 bias vector
    methods:
             adapt: Learn while in continuous use
         configure: Configure inputs & outputs
            gensim: Generate Simulink model
              init: Initialize weights & biases
           perform: Calculate performance
               sim: Evaluate network outputs given inputs
             train: Train network with examples
              view: View diagram
       unconfigure: Unconfigure inputs & outputs
ac =
  1191     1     1     1     1     1     1     1     1     1     1     1     2     1     1     1     2     1     1
  20382     2     2     2     2     2     2     2     1     1     2     2     1     1     2     2     2     2     1
  39402     1
Y =
  1190     0     1     1     1     1     1     1     1     1     1     1     1     1     1     1     0     1     1
     1     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0
  201
     0
yc =
  1192     2     1     1     1     1     1     1     1     1     1     1     1     1     1     1     2     1     1
  201
时间已过 0.491665 秒。

在这里插入图片描述

3. 小结

自组织竞争网络自己也是第一次学习,不过通过训练测试信息,可以看到他的网络结构,基本参数大同小异,也是需要设定神经元个数,学习率等参数进行最开始的训练。对本章内容感兴趣或者想充分学习了解的,建议去研习书中第二十一章节的内容。后期会对其中一些知识点在自己理解的基础上进行补充,欢迎大家一起学习交流。

猜你喜欢

转载自blog.csdn.net/sinat_34897952/article/details/125287968