1. 程式人生 > >matlab中使用bp神經網路完成分類問題

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;計算出分類準確的數目,算出準確率。我用的訓練集和測試集為同一資料,為何訓練出的網路對測試集分類準確率還是不高?路過大神請指教。。。。