Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function [predictions,erro] = predictor(classifier,projected_features,label_set,test_data,test_label_set,reductor_type,preserved)
- disp('predictor')
- size(test_data)
- size(label_set)
- dim=size(projected_features,1)
- if strcmp(classifier,'fld')
- pf.X=projected_features; %tem de ser dim x num_data
- pf.y=label_set; %1 x num_data
- modelfld = fld(pf);
- predictions = linclass(test_data,modelfld);
- disp('size prediction fld');
- size(predictions);
- %figure; ppatterns(pf); pline(modelfld);
- erro=cerror(predictions,test_label_set);
- %{
- test_struct.X = test_data;
- test_struct.y = test_label_set;
- figure; ppatterns(test_struct);
- title(strcat('Fisher LDA',', ,',reductor_type,', ,Dim: ',num2str(dim),', ,Error: ',num2str(erro),', ,InfoPreserved: ',num2str(preserved)));
- legend('1','2');
- xlabel('Feature 1') % x-axis label
- ylabel('Feature 2') % y-axis label
- zlabel('Feature 3') % <-axis label
- if size(projected_features,1)>2
- %plane3 %para desenhar plano
- plane3(modelfld);
- else
- pline(modelfld);
- end
- %}
- end
- %testar com minumum mahal
- if strcmp(classifier,'minimum_mahal')
- predictions=zeros(size(test_data(1,:)));
- %mean1=mean(projected_features(label_set==1));
- %mean2=mean(projected_features(label_set==2));
- %cov1=cov(projected_features(label_set==1));
- %cov2=cov(projected_features(label_set==2));
- mean1=mean(projected_features(:,label_set==1),2);
- mean2=mean(projected_features(:,label_set==2),2);
- cov1=cov(projected_features(:,label_set==1)');
- cov2=cov(projected_features(:,label_set==2)');
- cov1=cov1';
- cov2=cov2';
- C=(cov1+cov2)/2;
- i2=(mean1-mean2)'/C;
- %SIMPLIFICAMOS PORQUE O MATLAB DIZIA QUE ASSIM ERA MAIS RAPIDO
- %inversaC = inv(C);
- %dif_means = mean1-mean2;
- %sum_means = mean1+mean2;
- %d = dif_means' * inversaC * ( test_data(:,i)' - 0.5 * sum_means);
- for i=1:size(test_data,2)
- d=i2*(test_data(:,i)-0.5*(mean1+mean2));
- if d>0
- predictions(i)=1;
- else
- predictions(i)=2;
- end
- end
- test_struct.X = test_data;
- test_struct.y = predictions;
- figure; ppatterns(test_struct);
- erro=cerror(predictions,test_label_set)
- title(strcat('Mahalanobis',', ,',reductor_type,', ,Dim: ',num2str(dim),', ,Error: ',num2str(erro),', ,InfoPreserved: ',num2str(preserved)));
- legend('1','2');
- xlabel('Feature 1') % x-axis label
- ylabel('Feature 2') % y-axis label
- zlabel('Feature 3') % <-axis label
- %desenhar original
- test_struct.X = test_data;
- test_struct.y = test_label_set;
- figure; ppatterns(test_struct);
- title(strcat('Original, ,Dim: ',num2str(dim)));
- legend('1','2');
- xlabel('Feature 1') % x-axis label
- ylabel('Feature 2') % y-axis label
- zlabel('Feature 3') % <-axis label
- end
- %projected_features, label_set, test_data
- %é 1 e 2
- %testar com minumum thigny NAO ESTA A DAR
- if strcmp(classifier,'minimum_eucl')
- predictions=zeros(size(test_data(1,:)));
- %mean1=mean(projected_features(label_set==1));
- %mean2=mean(projected_features(label_set==2));
- mean1=mean(projected_features(:,label_set==1),2);
- mean2=mean(projected_features(:,label_set==2),2);
- for i=1:size(test_data,2)
- d=(mean1-mean2)'*(test_data(:,i)-0.5*(mean1+mean2));
- if d>0
- predictions(i)=1;
- else
- predictions(i)=2;
- end
- end
- test_struct.X = test_data;
- test_struct.y = predictions;
- figure; ppatterns(test_struct);
- erro=cerror(predictions,test_label_set)
- title(strcat('Euclidian',', ,',reductor_type,', ,Dim: ',num2str(dim),', ,Error: ',num2str(erro),', ,InfoPreserved: ',num2str(preserved)));
- legend('1','2');
- xlabel('Feature 1') % x-axis label
- ylabel('Feature 2') % y-axis label
- zlabel('Feature 3') % <-axis label
- %desenhar original
- test_struct.X = test_data;
- test_struct.y = test_label_set;
- figure; ppatterns(test_struct);
- title(strcat('Original, ,Dim: ',num2str(dim)));
- legend('1','2');
- xlabel('Feature 1') % x-axis label
- ylabel('Feature 2') % y-axis label
- zlabel('Feature 3') % <-axis label
- %nao tenho model, nao consegui representar plano
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement