zoukankan      html  css  js  c++  java
  • [matlab]bp神经网络工具箱学习笔记

    基本就三个函数:

    newff():创建一个bp神经网络

    train():训练函数

    sim():仿真函数

    同时具有可视化界面,但目前不知道可视化界面如何进行仿真,且设置不太全

    工具箱:Neural net fitting

    textread使用方法:http://blog.sina.com.cn/s/blog_9e67285801010bju.html

     ex1.

    clear; 
    clc;
    %注意P矩阵,matlab默认将一列作为一个输入
    P=[0.5152	0.8173	1.0000 ;
         0.8173	1.0000	0.7308;
         1.0000	0.7308	0.1390;
         0.7308	0.1390	0.1087;
         0.1390	0.1087	0.3520;
         0.1087	0.3520	0.0000;]';
    %以第四个月的销售量归一化处理后作为目标向量
    T=[0.7308 0.1390 0.1087 0.3520 0.0000 0.3761];
    %创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有5个神经元,输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,训练函数为梯度下降函数,即标准学习算法
    net=newff([0 1;0 1;0 1],[5,1],{'tansig','logsig'},'traingd');%minmax(P)
    net.trainParam.epochs=1500;%最大迭代次数.
    net.trainParam.goal=0.01; %训练的误差精度
    %设置学习速率为0.1
    LP.lr=0.1;
    net=train(net,P,T); 
    a=[0.1;0.2;0.3];
    a=premnmx(a);
    b=sim(net,a);
    b=postmnmx(b,0,1);
    b
    

    ex2.

    P=[3.2 3.2 3 3.2 3.2 3.4 3.2 3 3.2 3.2 3.2 3.9 3.1 3.2;
    9.6 10.3 9 10.3 10.1 10 9.6 9 9.6 9.2 9.5 9 9.5 9.7;
    3.45 3.75 3.5 3.65 3.5 3.4 3.55 3.5 3.55 3.5 3.4 3.1 3.6 3.45;
    2.15 2.2 2.2 2.2 2 2.15 2.14 2.1 2.1 2.1 2.15 2 2.1 2.15;
    140 120 140 150 80 130 130 100 130 140 115 80 90 130;
    2.8 3.4 3.5 2.8 1.5 3.2 3.5 1.8 3.5 2.5 2.8 2.2 2.7 4.6;
    11 10.9 11.4 10.8 11.3 11.5 11.8 11.3 11.8 11 11.9 13 11.1 10.85;
    50 70 50 80 50 60 65 40 65 50 50 50 70 70];
    T=[2.24 2.33 2.24 2.32 2.2 2.27 2.2 2.26 2.2 2.24 2.24 2.2 2.2 2.35];
    [p1,minp,maxp,t1,mint,maxt]=premnmx(P,T);
    
    %创建网络
    net=newff(minmax(P),[8,6,1],{'tansig','tansig','purelin'},'trainlm');%此时的minmax函数是正确的,minmax是在每一行取最大最小值,而这也是有意义的
    %设置训练次数
    net.trainParam.epochs = 5000;
    %设置收敛误差
    net.trainParam.goal=0.0000001;
    %训练网络
    [net,tr]=train(net,p1,t1);
    %TRAINLM, Epoch 0/5000, MSE 0.533351/1e-007, Gradient 18.9079/1e-010
    %TRAINLM, Epoch 24/5000, MSE 8.81926e-008/1e-007, Gradient 0.0022922/1e-010
    %TRAINLM, Performance goal met.
     
    %输入数据
    a=[3.0;9.3;3.3;2.05;100;2.8;11.2;50];
    %将输入数据归一化
    a=premnmx(a);
    %放入到网络输出数据
    b=sim(net,a);
    %将得到的数据反归一化得到预测数据
    c=postmnmx(b,mint,maxt);
    c
    

      

    ex3.

    close all;
    clear;
    clc;
    %读取训练数据
    [f1,f2,f3,f4,class] = textread('Train.txt','%f%f%f%f%d',75,'delimiter',',');
    %特征值归一化
    [input,minI,maxI] = premnmx( [f1,f2,f3,f4 ]')  ;
    %构造输出矩阵
    s=length(class) ;
    output=zeros(s,3) ;
    for i=1:s 
       output(i,class(i)) = 1 ;
    end
    %output=class';
    %创建神经网络
    net = newff( minmax(input),[10 3],{ 'logsig','purelin' },'traingdx' ); 
    %设置训练参数
    net.trainparam.show=50 ;
    net.trainparam.epochs=500 ;
    net.trainparam.goal=0.01 ;
    net.trainParam.lr=0.01 ;
    %开始训练
    net=train(net,input,output') ;
     
    
    %读取测试数据
    [t1 t2 t3 t4 c]=textread('Test.txt','%f%f%f%f%d',75,'delimiter',',');
    %测试数据归一化
    testInput=tramnmx([t1,t2,t3,t4]',minI,maxI);
    %仿真
    Y = sim(net,testInput)
    %统计识别正确率
    [s1,s2]=size( Y ) ;
    hitNum=0 ;
    for i=1:s2
        [m,Index]=max( Y(:,i));
        if(Index==c(i)) 
            hitNum=hitNum+1;
        end
    end
    sprintf('识别率是 %3.3f%%',100*hitNum/s2)
    

      

    拟合曲线:

      

  • 相关阅读:
    希望走过的路成为未来的基石
    第三次个人作业--用例图设计
    第二次结对作业
    第一次结对作业
    第二次个人编程作业
    第一次个人编程作业(更新至2020.02.07)
    Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    spring cloud springboot 框架源码 activiti工作流 前后分离 集成代码生成器
    java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/7215536.html
Copyright © 2011-2022 走看看