matlab中使用bp神经网络完成分类问题

训练集: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

载入数据

归一化处理训练集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;
计算出分类准确的数目,算出准确率。

我用的训练集和测试集为同一数据,为何训练出的网络对测试集分类准确率还是不高?
路过大神请指教。。。。

  • 6
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值