想用matlab做一个神经网络模型进行数据的预测,采用k折交叉验证的方法,下面是我的程序,求教各位大神!!新手学习,问题可能描述不够清楚,望指点!!
clear all
load input
load output
T=[input;output];%载入数据7*10000
indices=crossvalind('Kfold',10000,10);%分割数据集
for i=1:10;
test=(indices==i);
train=~test;
trainin=T(1:3,train);%输入的训练数据
trainout=T(4:7,train);%对应的输出训练数据
testin=T(1:3,test);%输入的一个测试集
testout=T(4:7,test);%对应的输出测试集
[traininn,ps_in]=mapminmax(trainin,-1,1);%数据归一化
[trainoutn,ps_out]=mapminmax(trainout,-1,1);
testinn=mapminmax('apply',testin,ps_in);
net=newff(traininn,trainoutn,150,{'tansig','purelin'},'trainlm');%构建网络
net.trainParam.epochs=500;
net.trainParam.goal=1e-3;
net.trainParam.lr=0.01;
net=train(net,traininn,trainoutn);%网络训练
p=sim(net,testinn);%测试集的预测结果
P=mapminmax('reverse',p,ps_out);%预测结果的反归一化
Ei=P-testout;%这一个测试集的误差值
end`
错误原因:无法将类型为 network 的值用作索引。
http://www.pudn.com/Download/item/id/2949288.html
参考这个完整的程序吧
数据集的大小不对应吧,或者你转置试试
训练集的train和函数名train冲突了,改一下训练集的名称即可