MATLAB手工仿照BP神经网络功能,数据预测建模、没有使用第三方库

% 功能:手工仿照BP神经网络功能,数据预测建模、没有使用第三方库
clear;close all; clc;
% 网络架构:401-10-1
% 50个样本,每个样本402个变量、输入变量401个、输出变量1个
% y=f(x1,x2,x3,...,x401)
% 
%第一步 读取数据
[data,text] = xlsread('yangzheng', '数据', 'B2:OM51');

input=data(:,2:402)';   %载入输入数据
output=data(:,1)';  %载入输出数据

%归一化需要保证每一列是一个样本、因此需要对原始数据进行转置

[inputn,inputps]=mapminmax(input,-1,1);
[outputn,outputps]=mapminmax(output,-1,1);

inputn = inputn';
outputn = outputn';

nnI = 401;% 输入401个
nnM = 10;% 隐含层10个
nnO = 1;% 输出1个

W1=2*rand(nnM,nnI)-1;
W2=2*rand(nnO,nnM)-1;

lr = 0.01;% 学习率为0.01
epochs = 1000;% 训练1000次

for i=1:epochs
    [W1,W2]=TrainNET(W1,W2,inputn,outputn,lr);
end

% 单点预测
xtest_=input(:,1);
xtest=mapminmax('apply',xtest_,inputps); % 对样本数据进行归一化

v1test=W1*xtest;
y1test=Sigmond(v1test);
vtest=W2*y1test;
ytest_=Sigmond(vtest);
ytest=mapminmax('reverse&

你可能感兴趣的:(算法,神经网络,人工智能)