清除变量
%% 清楚变量
claer;
clc;
导入数据
变量个数较少可以自己输入变量,变量数目较大时建议采用读取Excel并保存成.mat的方法来导入数据
%% 读取.m数据(以data.mat为例)
load('data.mat')
load('data1.mat')
P = data(:,2:end); % 读取输入数据
T = data(:,1); % 读取目标数据
[n,m] = size(P) % 获取自变量的个数(n)和样本数量(m)
X = data1 % 读取需要预测的输入数据
[N,M] = size(P) % 获取预测自变量的个数(n)和样本数量(m)
归一化数据处理
%% 对自变量进行归一化,消除量纲的影响
for j = 1:n % 对输入数据归一化
M = P(:,j);
M_min = min(M);
M_max = max(M);
for i=1:5433
p(i,j) = ((P(i,j)-M_min)/(M_max-M_min)); % 归一化公式之一
end
end
clear i j M_min M_max M; % 消除中间变量
for j = 1:N % 对预测的输入数据归一化
M = X(:,j);
M_min = min(M);
M_max = max(M);
for i=1:2599
x(i,j) = ((X(i,j)-M_min)/(M_max-M_min));
end
end
clear i j M_min M_max M;
设置神经网络训练数据和预测数据
p_train = p'; % 训练输入数据
t_train = T'; % 训练目标数据
x_test = x'; % 预测输入数据
net = newff(p_train,t_train,16,{
'tansig','purelin'},'trainlm'); % 构建网络,tansig表示正切关系,purelin表示线性关系
net.trainParam.epochs=1000; % 训练次数,这里设置为1000次
net.trainParam.lr=0.001; % 学习速率,这里设置为0.01
net.trainParam.goal=0.00001; % 训练目标最小误差,这里设置为0.00001
net=train(net,p_train,t_train); % 开始训练网络
BP神经网络预测
for i=1:M
y_tests(:,i)=sim(net,x_test(:,i)); % 用训练好的模型进行仿真
end
y = y_tests'; % y为预测结果
Y = round(y); % 对预测结果进行四舍五入
有疑问或者数学建模技术交流
+QQ :1825912434