• 大小: 7KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Matlab
  • 标签: ANN  

资源简介

ANN程序 MATLAB语言 用于数据处理 只要换数据就能用

资源截图

代码片段和文件信息

clc;clear;close all
disp(‘PLS预测的RMSECVRMSEP训练集及预测集的R‘)
load TenSesameAddSoybeanOil_NIR_20150121
meanornot = 1;
mean_method = 1;
switch mean_method
    case 1
       for i = 1:50
        Spectra(i:)= mean(spectra(3*i-2:3*i:));             
       end
       Target = target;
    case 2
       Spectra = spectra;
       Target((3*i-2):(3*i))  = target(i); 
end
for columm  = 1;
    name   = ynames;
disp(name{columm});
%-----------------KS对数据划分,训练集2/3,预测集1/3-------------------------
[mn]                    = size(cal);
[modeltest]             = kenstone(calfloor(2/3*m));
x_train                  = cal(model:);
x_pred                   = cal(test:);
y_train                  = caltar(modelcolumm);
y_pred                   = caltar(testcolumm);
[m_trainn_train]        = size(x_train);
%———————————----——数据中心化—————————--------------------
pretreatment = 3;%对于ANN,采用第2个中心化最好
switch pretreatment;
   case 1 %中心化
   mean_x_train         = mean(x_train); 
   x_train              = x_train - repmat(mean_x_trainsize(x_train1)1);
   x_pred               = x_pred - repmat(mean_x_trainsize(x_pred1)1);
   mean_y_train         = mean(y_train);
   y_train              = y_train - repmat(mean_y_trainsize(x_train1)1); 
   case 2 %Normalize
   std_x_train          = std(x_train01);
   mean_x_train         = mean(x_train1);
   std_y_train          = std(y_train01);
   mean_y_train         = mean(y_train);   
   y_train              = (y_train - repmat(mean_y_trainsize(y_train1)1))./repmat(std_y_trainsize(y_train1)1); 
   x_train              = (x_train-repmat(mean_x_trainsize(x_train1)1))./repmat(std_x_trainsize(x_train1)1);
   x_pred               = (x_pred-repmat(mean_x_trainsize(x_pred1)1))./repmat(std_x_trainsize(x_pred1)1);
   case 3  %最大最小归一化 
   [train_xps_x]       = mapminmax(x_train‘);
   [train_yps_y]       = mapminmax(y_train‘);
   x_train              = train_x‘;
   y_train              = train_y‘;
   pred_x               = mapminmax(‘apply‘x_pred‘ps_x);
   x_pred               = pred_x‘;
   y_pred               = mapminmax(‘apply‘y_predps_y);   
end
%-------------------------BP-ANN外部预测------------------------------------
disp(‘BP-ANN直接预测‘);  %学习速率,动量项,隐含层节点数为nodenumber
net                    = newff(minmax(x_train‘)[nodenumber1]{‘tansig‘‘purelin‘}‘traingdm‘);
%训练函数trainlm使用的学习算法为Levenberg-Marquadt,优点收敛速度快
%训练函数traingd使用的学习算法是梯度下降法,收敛速度很慢
%动量BP算法:训练函数traingdm(Gradient descent with momentum backpropagation)
%弹性BP算法:训练函数traingrp()
%准牛顿BP算法:训练函数trainbfg()
inputWeights           = net.IW{11};
inputbias              = net.b{1};
layerWeights           = net.LW{21}; 
layerbias              = net.b{2};    
%net.trainParam.show    = 50;   %训练显示间隔
net.trainParam.lr      = 0.01; %学习速率Learning rate,默认值0.01
%net.trainParam.mc      = 0.9;  %动量项Momentum constant,默认值0.9
net.trainParam.epochs  = 2000;  %最大训练次数  
net.trainParam.goal    = 1e-3;  
[nettr]   

评论

共有 条评论