训练集:27*2500矩阵
训练集有2500个样本,每个样本27个属性,矩阵的每一列表示一个样本集
标签:30*2500矩阵
对应2500个标签,30类,若为该类,则该类数字为1,其余为零。例【1,0,0,0】四类中的类一
神经网络训练
load labeltr.mat;
load traintr.mat;
%save test.mat;
%save label.mat;%必须为行向量
pr=traintr';%赋值
tr1=labeltr';
[pr1,ps]=mapminmax(pr);%归一化处理,范围-1~1,返回值数据test1,归一化参数ts
net=newff(pr1,tr1,15);%创建网络,隐层经验公式9-17
net.trainParam.epochs=10000;
net.trainParam.goal=1e-7;
net.trainParam.lr=0.01;%学习率
net.trainParam.mc=0.9;%动量因子设置1
net.trainParam.show=25;%显示的间隔次数
[net,tr]=train(net,pr1,tr1);%训练神经网络
youtput=sim(net,pr1);
save youtput
load traintr.mat;
%save test.mat;
%save label.mat;%必须为行向量
pr=traintr';%赋值
tr1=labeltr';
[pr1,ps]=mapminmax(pr);%归一化处理,范围-1~1,返回值数据test1,归一化参数ts
net=newff(pr1,tr1,15);%创建网络,隐层经验公式9-17
net.trainParam.epochs=10000;
net.trainParam.goal=1e-7;
net.trainParam.lr=0.01;%学习率
net.trainParam.mc=0.9;%动量因子设置1
net.trainParam.show=25;%显示的间隔次数
[net,tr]=train(net,pr1,tr1);%训练神经网络
youtput=sim(net,pr1);
save youtput
归一化处理训练集mapminmax(属性的归一化)
对
创建神经网络newff
设置训练参数
训练神经网络train(网络,训练集,训练标签),train会自动将训练集按一定比列划分,训练出模型,不需要额外的验证集和测试集,训练完成后再给测试集,归一化后送入神经网络,得到输出结果
准确性评估
load labeltr.mat
load youtput.mat
tr1=labeltr';
acc=0;
count=length(youtput);
[max_y,indexy]=max(youtput);
[max_l,indexl]=max(tr1);
for i=1:count
if indexy(i)==indexl(i)
%if indexy(i)==indexl(i)||indexy(i)==indexl(i)+1||indexy(i)==indexl(i)-1
acc=acc+1;
end
end
accuracy=acc/count;
load youtput.mat
tr1=labeltr';
acc=0;
count=length(youtput);
[max_y,indexy]=max(youtput);
[max_l,indexl]=max(tr1);
for i=1:count
if indexy(i)==indexl(i)
%if indexy(i)==indexl(i)||indexy(i)==indexl(i)+1||indexy(i)==indexl(i)-1
acc=acc+1;
end
end
accuracy=acc/count;
计算出分类准确的数目,算出准确率。
我用的训练集和测试集为同一数据,为何训练出的网络对测试集分类准确率还是不高?
路过大神请指教。。。。