TP-analyse-donnees/TP3/exercice_3_bis.m
2023-05-29 16:43:44 +02:00

61 lines
2.7 KiB
Matlab
Executable file

%--------------------------------------------------------------------------
% ENSEEIHT - 1SN - Analyse de données
% TP3 - Classification bayésienne
% exercice_3.m
%--------------------------------------------------------------------------
clear
close all
clc
% Chargement des données de l'exercice 2
load resultats_ex2
%% Classifieur par maximum de vraisemblance
% code_classe est la matrice contenant des 1 pour les chrysanthemes
% 2 pour les oeillets
% 3 pour les pensees
% l'attribution de 1,2 ou 3 correspond au maximum des trois vraisemblances
V_full = cat(3, V_chrysanthemes, V_oeillets, V_pensees);
[~, code_classe] = max(V_full, [], 3);
%% Affichage des classes
figure('Name','Classification par maximum de vraisemblance',...
'Position',[0.25*L,0.1*H,0.5*L,0.8*H])
axis equal ij
axis([r(1) r(end) v(1) v(end)]);
hold on
imagesc(r,v,code_classe)
carte_couleurs = [.45 .45 .65 ; .45 .65 .45 ; .65 .45 .45];
colormap(carte_couleurs)
hx = xlabel('$\overline{r}$','FontSize',20);
set(hx,'Interpreter','Latex')
hy = ylabel('$\bar{v}$','FontSize',20);
set(hy,'Interpreter','Latex')
view(-90,90)
plot(X_oeillets(:,1),X_oeillets(:,2),'go','MarkerSize',10,'LineWidth',2);
plot(X_chrysanthemes(:,1),X_chrysanthemes(:,2),'b+','MarkerSize',10,'LineWidth',2);
plot(X_pensees(:,1),X_pensees(:,2),'r*','MarkerSize',10,'LineWidth',2);
%% Comptage des images correctement classées
[V_c_c, ~] = vraisemblance(X_chrysanthemes(:,1), X_chrysanthemes(:,2), mu_chrysanthemes, Sigma_chrysanthemes, denominateur_classe_chrysanthemes);
[V_c_o, ~] = vraisemblance(X_chrysanthemes(:,1), X_chrysanthemes(:,2), mu_oeillets, Sigma_oeillets, denominateur_classe_chrysanthemes);
[V_c_p, ~] = vraisemblance(X_chrysanthemes(:,1), X_chrysanthemes(:,2), mu_pensees, Sigma_pensees, denominateur_classe_chrysanthemes);
[V_o_c, ~] = vraisemblance(X_oeillets(:,1), X_oeillets(:,2), mu_chrysanthemes, Sigma_chrysanthemes, denominateur_classe_oeillets);
[V_o_o, ~] = vraisemblance(X_oeillets(:,1), X_oeillets(:,2), mu_oeillets, Sigma_oeillets, denominateur_classe_oeillets);
[V_o_p, ~] = vraisemblance(X_oeillets(:,1), X_oeillets(:,2), mu_pensees, Sigma_pensees, denominateur_classe_oeillets);
[V_p_c, ~] = vraisemblance(X_pensees(:,1), X_pensees(:,2), mu_chrysanthemes, Sigma_chrysanthemes, denominateur_classe_pensees);
[V_p_o, ~] = vraisemblance(X_pensees(:,1), X_pensees(:,2), mu_oeillets, Sigma_oeillets, denominateur_classe_pensees);
[V_p_p, ~] = vraisemblance(X_pensees(:,1), X_pensees(:,2), mu_pensees, Sigma_pensees, denominateur_classe_pensees);
nb_c = (V_c_c > V_c_o) & (V_c_c > V_c_p);
nb_o = (V_o_o > V_o_c) & (V_o_o > V_o_p);
nb_p = (V_p_p > V_p_c) & (V_p_p > V_p_o);
nb = sum(nb_c + nb_o + nb_p) / 30 * 100;