61 lines
2.7 KiB
Matlab
Executable file
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; |