• BP神经网络非线性函数拟合应用


    %% BP神经网络的输入输出数据
    % clear all
    % clc
    % x=rand(1,1500);
    % y=rand(1,1500);
    % p=[x;y]';
    % z=x.^2-y.^2+3;
    % save x x
    % save y y
    % save p p
    % save z z 
    %%
    clear all
    clc
    %% 训练数据预测数据提取及归一化
    % 下载输入输出数据
    % load x y z p
    x=rand(1,1500);
    y=rand(1,1500);
    p=[x;y]';
    z=x.^2-y.^2+3;
    % 从1到1500间随机排序
    k=rand(1,1500);
    [m,n]=sort(k);
    % 找出训练数据和预测数据
    input_train=p(n(1:1400),:)';
    output_train=z(n(1:1400));
    input_test=p(n(1401:1500),:)';
    output_test=z(n(1401:1500));
    % 训练样本输入输出数据归一化
    [inputn,inputps]=mapminmax(input_train);
    [outputn,outputps]=mapminmax(output_train);
    %% BP网络训练
    % 初始化网络结构
    net=newff(inputn,outputn,5);
    
    net.trainParam.epochs=500;
    net.trainParam.lr=0.05;
    net.trainParam.goal=0.0004;
    % 网络训练
    net=train(net,inputn,outputn);
    %% BP网络预测
    % 预测数据归一化
    inputn_test=mapminmax('apply',input_test,inputps);
    % 网络预测输出
    an=sim(net,inputn_test);
    % 网络输出反归一化
    BPoutput=mapminmax('reverse',an,outputps);
    %% 结果分析
    figure(1)
    plot(BPoutput,':og');
    hold on
    plot(output_test,'-*');
    ylabel('仿真输出','fontsize',12);
    xlabel('样本','fontsize',12);
    % 预测误差
    error=BPoutput-output_test;
    figure(2)
    subplot(2,1,1)
    plot(error,'-*');
    ylabel('绝对误差','fontsize',12);
    xlabel('样本','fontsize',12);
    
    subplot(2,1,2)
    plot((output_test-BPoutput)./BPoutput*100,'-*');
    ylabel('误差百分比','fontsize',12)
    xlabel('样本','fontsize',12)
    
    errorsum=sum(abs(error))
    %%
    

  • 相关阅读:
    阈值处理——实例分析
    阈值处理
    split()函数+merge()函数
    imread函数+cvtColor()函数
    OpenCV3.2.0+VS2015开发环境配置
    Javascript中的async await
    React Native 系列(一)
    React Native 系列(三)
    React Native 系列(六)
    React Native 系列(七)
  • 原文地址:https://www.cnblogs.com/javafly/p/6037206.html
Copyright © 2020-2023  润新知