• 数学建模算法(三):神经网络


    1.BP神经网络(葡萄酒

    clear all; clc ;
    data=[
        -1.17    -0.73    2.2    -0.6    -0.34    -0.4    -1.59    -0.15    0.09    -0.42
    -0.16    -0.08    -0.75    -0.46    -0.7    -0.69    0.36    0.07    -0.48    0.26
    0.46    3.37    -0.29    -0.46    0.37    -0.12    0.87    3.23    1.81    -0.36
    0.15    0.15    1.35    -0.5    0.04    0    0.08    0.95    -0.64    0.68
    0.18    0.78    -0.54    -0.3    0.62    -0.13    0.1    -1.01    -0.42    -0.31
    1.72    -0.11    0.05    0.22    -0.38    0.52    -0.05    0.08    -0.25    -0.12
    -0.05    -0.25    -0.12    -0.13    -1.58    -0.49    -2.38    -0.6    -0.97    -0.21
    -1.36    -0.74    -0.86    -0.04    -0.67    -0.31    0.77    -0.89    0.72    -0.44
    0.47    -0.02    -0.78    -0.56    2.58    -0.27    0.27    1.03    0.16    -0.35
    -0.42    0.16    -0.63    -0.51    -0.31    -0.57    -0.29    0.08    -0.56    0.3
    -0.89    -0.42    -0.86    -0.44    0.19    -0.23    1.45    -1.12    1.13    -0.46
    0.65    -0.25    -0.48    0.26    -0.25    4.14    0.94    -0.94    -0.79    -0.46
    1.41    -1.41    1.24    -0.62    -0.97    1.82    -0.38    -0.61    -0.33    -0.24
    -1.45    -0.45    -0.32    -0.5    2.36    -0.14    -1.32    -0.46    3.08    -0.48
    1.89    0.79    -0.81    0.63    0.14    -0.47    0.1    -1.17    1.55    4.72
    -0.91    -1.05    0.09    -0.07    -2.37    -0.15    -2.16    -0.74    -1.34    -0.4
    -1.52    -0.86    2.68    0    -0.2    -0.69    0.1    0.85    0.27    -0.03
    -0.43    -0.72    -0.24    -0.34    -1.24    1.6    -0.76    -0.31    0.39    -0.51
    0    -1.24    -0.85    -0.55    -0.08    -0.15    1.19    0.67    -0.42    -0.41
    0.53    0.11    -0.64    0.02    0.83    -0.54    -0.89    -0.04    -0.19    -0.3
    0.06    -0.43    1.78    -0.56    -0.17    -0.19    -0.26    -0.33    -0.11    -0.39
    1.35    -0.54    1.25    0.31    0.34    -0.46    1.72    -0.57    -0.36    -0.04
    -1.2    -0.47    -0.72    0.68    -0.07    -0.5    0.3    1.95    -0.84    0.01
    1.02    1.23    -0.37    -0.3    0.71    -0.22    0.37    0.68    -0.17    -0.04
    1.03    0.44    -0.54    0.28    -0.1    -0.03    0.77    0.64    -0.32    -0.3
    -1.32    0.14    -0.21    -0.18    -0.02    -0.57    0.94    -0.89    -1.57    1.16
    0.48    0.58    -0.1    4.74    0.47    -0.28    0.07    0.3    -0.52    -0.36
    -0.51    2.02    -0.51    -0.03    0.77    -0.48    -0.31    -0.71    1.09    -0.49
    
    ];
    p1=data(3,:);
    p2=[
        data(1,:);
        data(10,:);
        data(16,:);
        data(23,:);
        data(2,:);
        data(26,:);
        data(7,:);
        data(21,:);
        data(28,:)
    ];
    p3=[
        data(19,:);
        data(5,:);
        data(24,:);
        data(11,:);
        data(9,:);
        data(25,:);
        data(6,:)
    ];
    p4=[
        data(22,:);
        data(27,:);
        data(13,:);
    
    ];
    p=[p1;p2;p3;p4]';
    pr=minmax(p);
    goal=[
        ones(1,1),zeros(1,19);zeros(1,1),ones(1,9),zeros(1,10);
        zeros(1,10),ones(1,7),zeros(1,3);zeros(1,17),ones(1,3)
    ];
    net=newff(pr,[7,4],{'logsig','logsig'}); %创建 一个bp 神经网络 %logsig 对数S形传递函数
    net.trainParam.show = 10;  %显示训练迭代过程,是n个周期后显示一下收敛曲线的变化
    net.trainParam.lr = 0.05;    %学习速率0.05
    net.trainParam.goal = 1e-13;   %训练精度
    net.trainParam.epochs = 900000;   %最大训练次数
    net = train(net,p,goal);  %训练
    x=[
        data(20,:);
        data(12,:);
        data(18,:);
        data(15,:);
        data(8,:);
        data(4,:);
        data(14,:);
        data(17,:)
        ]'; %待判断数据
    y0=sim(net,p)
    y=sim(net,x)
    
    回归因子,运行结果:
    
    y0 =
    
      Columns 1 through 9
    
        0.9999    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000
        0.0001    1.0000    1.0000    1.0000    0.9999    0.9999    1.0000    1.0000    0.9999
        0.0001    0.0000    0.0000    0.0000    0.0000    0.0001    0.0000    0.0001    0.0000
        0.0000    0.0001    0.0000    0.0000    0.0000    0.0000    0.0003    0.0000    0.0001
    
      Columns 10 through 18
    
        0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000
        0.9999    0.0000    0.0000    0.0000    0.0001    0.0000    0.0000    0.0000    0.0000
        0.0002    0.9999    0.9999    0.9999    0.9998    0.9999    0.9999    0.9999    0.0007
        0.0000    0.0001    0.0000    0.0000    0.0000    0.0000    0.0001    0.0002    0.9997
    
      Columns 19 through 20
    
        0.0000    0.0000
        0.0002    0.0000
        0.0003    0.0001
        0.9998    0.9986
    
    
    y =
    
        0.0000    0.0001    0.0000    0.3158    0.0000    0.0000    0.9968    0.0000
        0.7749    0.0000    0.2577    0.0463    0.9825    0.9996    0.9426    1.0000
        1.0000    0.9999    0.0011    0.0114    0.0002    0.0000    0.2173    0.0000
        0.0000    0.0000    0.1042    0.0251    0.0996    0.0004    0.0000    0.0001
    
    >>
    
    主成分因子数据运行结果 :
    
    y0 =
    
      Columns 1 through 9
    
        0.9997    0.0000    0.0000    0.0001    0.0000    0.0000    0.0000    0.0000    0.0000
        0.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    0.0000    0.0000
        0.0002    0.0000    0.0000    0.0001    0.0000    0.0000    0.0000    1.0000    1.0000
        0.0002    0.0001    0.0001    0.0001    0.0003    0.0000    0.0001    0.0000    0.0000
    
      Columns 10 through 18
    
        0.0000    0.0002    0.0000    0.0000    0.0001    0.0001    0.0000    0.0000    0.0000
        0.0000    0.0004    0.0000    0.0000    0.0000    0.0000    0.0001    0.0000    0.0000
        1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    0.0001
        0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.9997
    
      Columns 19 through 20
    
        0.0003    0.0002
        0.0001    0.0000
        0.0000    0.0000
        0.9999    0.9999
    
    
    y =
    
        0.0004    0.0000    0.9993    0.0001    0.0000    0.0000    0.0000
        0.2758    0.2290    0.0016    0.0000    0.0000    0.0000    1.0000
        0.9994    0.9886    0.0243    0.0024    0.9986    0.9999    0.0000
        0.0000    0.0000    0.0000    0.9992    0.0129    0.0002    0.0000

     2.(重金属污染

    clc,clear
    load As a b c
    data=[a';b'];
    data=data';
    data1=c;
    k=rand(1,60501);
    [m n]=sort(k);
    %获取训练数据与预测数据
    input_train=data(n(1:9900),:)';
    output_train=data1(n(1:9900),:)';
    input_test=data(n(9901:10000),:)';
    output_test=data1(n(9901:10000),:)';
    %数据归一化
    [inputn,inputps]=mapminmax(input_train);
    [outputn,outputps]=mapminmax(output_train);
    %%bp训练%初始化网络结构
    net=newff(inputn,outputn,100);
    net.trainParam.show=30;
    net.trainParam.epochs=300;%最大迭代次数
    net.trainParam.lr=0.01;%学习速率
    net.trainParam.goal=1e-6;
    %网络训练
    net=train(net,inputn,outputn);%%bp预测
    %预测数据归一化?
    inputn_test=mapminmax('apply',input_test,inputps);%网络预测输出
    an=sim(net,inputn_test);%仿真
    %网络输出反归一化
    BPoutput=mapminmax('reverse',an,outputps);%结果分析
    figure
    plot(BPoutput,':og');
    hold on
    plot(output_test,'-*');
    legend('预测输出','期望输出','fontsize',12)
    title('BP?网络预测输出','fontsize',12)
    xlabel('样本','fontsize',12)
    ylabel('输出','fontsize',12)%预测误差
    error=BPoutput-output_test;
    figure
    plot(error,'-*')
    title('神经网络预测误差')
    errorsum=sum(abs(error))
    save data2 net inputps outputps
  • 相关阅读:
    遍历datatable的方法
    C# 存储过程使用方法
    C# 存储过程
    dev repositoryItem 手工定义
    无限极分类
    ThinkPHP
    ThinkPHP
    RBAC
    ThinkPHP
    正则表达式
  • 原文地址:https://www.cnblogs.com/pursuit1996/p/5149513.html
Copyright © 2020-2023  润新知