Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %% LOAD TRAINING DATA %%
- load('ocr_names.mat');
- A = 26;
- pixels = size(TrnData(1).X, 1);
- % training data
- y_trn = [];
- for i = 1:length(TrnData)
- y_trn = strcat(y_trn,TrnData(i).Y);
- end
- N_trn = length(y_trn);
- x_trn = zeros(pixels, N_trn);
- i_tmp = 1;
- for i = 1:length(TrnData)
- x_trn(:,i_tmp:(i_tmp+length(TrnData(i).Y)-1)) = TrnData(i).X;
- i_tmp = i_tmp+length(TrnData(i).Y);
- end
- y_trn = uint8(y_trn)-96;
- %% LOAD TESTING DATA %%
- y_tst = [];
- for i = 1:length(TstData)
- y_tst = strcat(y_tst,TstData(i).Y);
- end
- N_tst = length(y_tst);
- x_tst = zeros(pixels, N_tst);
- i_tmp = 1;
- for i = 1:length(TstData)
- x_tst(:,i_tmp:(i_tmp+length(TstData(i).Y)-1)) = TstData(i).X;
- i_tmp = i_tmp+length(TstData(i).Y);
- end
- y_tst = uint8(y_tst)-96;
- %% #1 - simple perceptron algorithm %%
- w1 = zeros(A, pixels+1); % classifier in matrix form
- max_wrong = 0;
- last_wrong = 0;
- done = 0;
- while ~done
- wrong = 0;
- done = 1;
- [i wrong max_wrong last_wrong]
- for i = 1:N_trn
- x = [x_trn(:,i) ; 1];
- [~, y_classified] = max(w1*x);
- if(y_classified ~= y_trn(i))
- done = 0;
- wrong = wrong + 1;
- w1(y_classified,:) = w1(y_classified,:) - x';
- w1(y_trn(i),:) = w1(y_trn(i),:) + x';
- end
- end
- last_wrong = max_wrong;
- max_wrong = wrong;
- end
- %% clssify and measure label error %%
- wrong = 0;
- classified = zeros(1, N_tst);
- for i = 1:N_tst
- x = [x_tst(:,i) ; 1];
- [~, classified(i)] = max(w1*x);
- end
- error = mean(classified == y_tst) % 0.7384
- %% classify and measure sequence error%%
- ok_num = 0;
- for i = 1:length(TstData)
- [i ok_num]
- y = uint8(TstData(i).Y) - 96;
- X = [TstData(i).X ; ones(1, length(y))];
- [~, y_class] = max((w1*X))
- ok_num = ok_num + all(y_class == y);
- end
- error = 1 - (ok_num/length(TstData)) % 0.6660
Advertisement
Add Comment
Please, Sign In to add comment