Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.42 KB | None | 0 0
  1. clear all;
  2. %wczytanie danych
  3. data = load("data_processed");
  4. data = [data(:,[7 11:17 24:28]),mapminmax(data(:,[1:6 8:10 18:23 29:30]))];
  5. datatrain = data;
  6. datatest = data(randperm(size(data,1)),:);
  7. datatest = datatest(1:50,:);
  8.  
  9. %przygotowanie danych do nauki
  10. input = datatrain(:,2:end)';
  11. target = datatrain(:,1)'+1;
  12. targetvector = full(ind2vec(target));
  13.  
  14. %przygotowanie danych testowych
  15. testinput = datatest(:,2:end)';
  16. testtarget = datatest(:,1)'+1;
  17.  
  18. %przygotowanie atrybutów do eksperymentów
  19. lrs = [0.01:0.01:0.09,0.1:0.1:0.9,0.99,1];
  20. neurons = 10:10:100;
  21. epochs = 10:10:100;
  22.  
  23. %pętla wykonująca eksperymenty
  24. count = 1;
  25. for i = 1:length(lrs)
  26.     for j = 1:length(neurons)
  27.         exPK = [];
  28.         for k = 1:length(epochs)
  29.             lr = lrs(i);
  30.             ec = epochs(k);
  31.             nc = neurons(j);
  32.             net = lvqnet(nc,lr);
  33.             net.trainParam.epochs=ec;
  34.            
  35.             [net,tr] = train(net,input,targetvector);
  36.  
  37.             test = net(input);
  38.             testind=vec2ind(test);
  39.             PK = (1-sum(abs(target-testind)>=0.5)/length(input))*100
  40.             % Eksperyment 1
  41.             PERF = tr.perf;
  42.             EPOCH = tr.epoch;
  43.             plotName = sprintf('plot_MSE%d_lr_%f-nc_%d_ec_%d.png',count,lr,nc,ec);
  44.             plot(EPOCH,PERF);
  45.             title('Wykres wartości błędu MSE w zależności od liczby epok');
  46.             xlabel('Liczba epok')
  47.             ylabel('Wartość błędu MSE')
  48.             saveas(gcf, plotName);
  49.             PK_en(k,j) = PK;
  50.             exPK(k) = PK;
  51.             VarName = sprintf('exp2_%d_lr_%f_nc_%d_ec_%d',count,lr,nc,ec);
  52.             save(VarName, 'lr','nc','ec');
  53.             count = count+1;
  54.         end
  55.         PK_lrn(i,j) = mean(exPK);
  56.         VarName = sprintf('exp1_%d_lr_%f_nc_%d',count,lr,nc);
  57.         save(VarName, 'lr','nc');
  58.     end
  59.     % Eksperyment 2
  60.     FigName = sprintf('surf_PK_lr_%d.png',lr);
  61.     surf(neurons,epochs,PK_en);
  62.     title('Wykres MSE w zależności od liczby epok i liczby neuronów');
  63.     xlabel('Liczba epok');
  64.     ylabel('Liczba neuronów');
  65.     zlabel('Wartość PK');
  66.     saveas(gcf, FigName, 'png');
  67. end
  68. % Eksperyment 3
  69. FigName = sprintf('surf_PK_lr_%f_nc_%d.png',lr,nc);
  70. surf(lrs,neurons,PK_lrn);
  71. title('Wykres MSE w zależności od liczby epok i liczby neuronów');
  72. xlabel('Learning rate');
  73. ylabel('Liczba neuronów');
  74. zlabel('Wartość PK');
  75. saveas(gcf, FigName, 'png')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement