- 积分
- 504
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-10-25
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
新手求帮忙!
我需要对24个文件命名为1xin.txt.......24xin.txt的文件分别作为训练样本进行训练,对应的测试样本命名为1xin2010.txt.......24xin2010.txt,但处理方式是一样的,所以想学习一下怎么进行批处理,我的程序如下,但是只能运行k=1的时候,就不再循环了,求大神帮忙看下!
clc;
clear;
%输入训练向量p,注意必须使p,t矩阵列相等其中每列表示一个样本,行数表示总样本数
%训练样本
%在不同隐节点下求的值
for k=1,24;
P11=importdata(strcat('F:\wind\analysis\TJ\DATA\BP\05009\',num2str(k),'xin.txt'));%xin代表24个训练样本
P1=P11'; %转秩
%训练目标向量t
T=importdata('F:\wind\analysis\TJ\DATA\BP\05009\T\T.txt');
T=T';
T1=T(k,:); %取第k正行数据
%测试样本P_test
P22=importdata(strcat('F:\wind\analysis\TJ\DATA\BP\05009\',num2str(k),'xin2010.txt'));
P2=P22';
%测试目标t1
T5=importdata('F:\wind\analysis\TJ\DATA\BP\05009\T_test\T_test.txt');
T5=T5';
T2=T5(k,:);
%训练样本归一化
[PN1,minp,maxp,TN1,mint,maxt] = premnmx(P1,T1);
%测试样本归一化
PN2= tramnmx(P2,minp,maxp);
TN2= tramnmx(T2,mint,maxt);
%创建网络参数,可以根据自己要求修改
net=newff(minmax(PN1),[14,1],{'tansig','tansig','purelin'},'traingdx');%创建BP网络
net.trainparam.show=50;%每50次显示一次训练过程
net.trainparam.mc=0.7;%动量因子
net.trainparam.lr=0.9;%学习速率
net.trainparam.epochs=2500;%训练步数
net.trainparam.goal=0.001;%目标误差
net.trainparam.goal=1e-8;
%net.trainparam.goal=0.002;
% net.trainParam.min_grad=e-17;%最小梯度
net.trainParam.time = inf; % 最大训练时间
%网络初始化
net=init(net);
%训练网络
[net,tr]=train(net,PN1,TN1);
%网络仿真
YN1=sim(net,PN1);
YN2=sim(net,PN2);
%%反归一化
Y2= postmnmx(YN2,mint,maxt);
Y22=Y2';
Y1= postmnmx(YN1,mint,maxt);
Y11=Y1';
%mse指标
MSE1=mean((TN1-YN1).^2); % 训练均方误差
MSE2=mean((TN2-YN2).^2); % 测试均方误差
figure(1); %注意更改数据长度
plot(1:length(T2),T2,'r+:',1:length(Y2),Y2,'bo:');
title('+为真实值,o为预测值');
%%%拟合检验
figure(2); %注意更改数据长度
plot(1:length(T1),T1,'r+:',1:length(Y1),Y1,'bo:');
title('+为真实值,o为预测值');
save(strcat('F:\wind\analysis\TJ\DATA\BP\05009\',num2str(k),'shuchu','.txt'),'-ascii','Y22');
end
|
|