⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 综合输入.m

📁 利用人工神经网络进行预测的Matlab程序 其中包括好几种例子
💻 M
字号:


%%%%%%%%%%%%%%%%从EXCEL载入初始数据%%%%%%%%%%%%%%%%
a=[data];
%%%%%%%%%%%%%%%%变量定义%%%%%%%%%%%%%%%%
L=240 ;    %%%%%股价历史数据总数%%%%%
n=3 ;       %%%%%神经网络输入数据数量%%%%%
m=1  ;     %%%%%神经网络输出数据数量%%%%%
k=L-(n+m)+1;    %%%%%样本个数%%%%%
max_1=[10 419564736 1200 1800];         %%%%%%%%定义最大值%%%%%%%%%%
min_1=[5 2479420 700 1000];            %%%%%%%%定义最小值%%%%%%%%%%
%%%%%%%%%%%%%%%%%经验公式计算初始隐节点数%%%%%%%%%%%%%%%%%
s=sqrt(0.43*m*n*4+0.12*n*16*n+2.54*m+0.77*n*4+0.35)+0.51;
s=round(s)

%%%%%%%%%%%%%%%%%定义输入向量:p_1%%%%%%%%%%%%%%%%
p_1(k,n*4)=1;     %K行4n列的矩阵
for i=1:k
    for j=1:n
        p_1(i,1+(j-1)*4:4*j)=a((i+j-1),:);
    end
end
p_2=p_1';
%%%%%%%%%%%%%%%%定义目标向量:t_1%%%%%%%%%%%%%%%%
t_1(1,k)=1;
for i=1:k
    t_1(1,i)=a(n+i,1);
end
t_2=t_1;
%%%%%%%%%%%%%%%%归一化 界定在(0,1)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:n*4
    j=rem(i,4);
if(j==0)
   j=4;
end
    p_2(i,:)=(p_2(i,:)-min_1(j))/(max_1(j)-min_1(j)); %%%%%输入数据%%%%%
end

   t_2(1,:)=(t_2(1,:)-min_1(1))/(max_1(1)-min_1(1)); %%%%%目标数据%%%%%
%for i=1:n
   % test_2(i,:)=(test_2(i,:)-min(a))/(max(a)-min(a)); %%%%%测试数据%%%%%
%end

%testrue_1(1,:)=(testrue_1(1,:)-min(a))/(max(a)-min(a)); %%%%%测试真值%%%%%

%%%%%%%%%%%%%%%%训练%%%%%%%%%%%%%%%%
for  i=1:n*4
    threshold(i,1)=0;
   threshold(i,2)=1;
end
             %%%%%确定输入神经元个数及取值范围%%%%%

net=newff(threshold,[5,1],{'tansig','logsig'},'trainlm');
net.trainParam.epochs=1000;  %%%%%训练次数%%%%%
net.trainParam.goal=0.0001;   %%%%%训练目标%%%%%
net.trainParam.show=20;
LP.lr=0.8;                   %%%%%学习速率%%%%%

net=train(net,p_2,t_2);       %%%%%训练%%%%%
save dyson_2 net;
%%%%%%%%%%%%%%%%仿真预测%%%%%%%%%%%%%%%%
out=sim(net,p_2);
%%%%%%%%%%%%%%%%%%%%%%%将网络输出反归一化处理%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%       
   out_1(1,:)=out(1,:)* ((max_1(1)-min_1(1)))+ min_1(1);
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 e=t_1-out_1; %%%%%%%%误差向量%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%网络评价%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%求MAE%%%%%%%%%%
x_1=0;
for i=1:k
    x_1=x_1+abs(e(i));
end
MAE=x_1/k
%%%%%求SSE%%%%%%%%%%
x_2=0;
for i=1:k
    x_2=x_2+e(i)*e(i);
end
SSE=x_2
%%%%%求MSE%%%%%%%%%%
MSE=x_2/k
D=mse(e)
%%%%%求MAPE%%%%%%%%%%
x_3=0;
for i=1:k
    x_3=x_3+abs(e(i)/t_1(i));
end
MAPE=x_3/k
%%%%%求精度A%%%%%%%%%%
A=1-MAPE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%绘制图形%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
error=t_1-out_1;
X=1:k;
figure(1);
plot(X,error)
xlabel('训练样本(X)');
ylabel('股票价格预测误差(Y)');  %%%%%%%%%%%%%%%%%%%%%%%%%%%%网络误差曲线图%%%%%%%%%%%%%%%%%
figure(2);
plot(X,t_1,'r+');%%%%%%%%%%%%%绘制真值%%%%%%%%%%%%%%%%%%%%%%
hold on
plot(X,out_1,'.'); %%%%%%%%%%%%%绘制预测的数值%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%预测值与真值比较图%%%%%%%%%%%%%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -