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

100 lines
3.7 KiB
Matlab
Executable file

%--------------------------------------------------------------------------
% ENSEEIHT - 1SN - Analyse de données
% TP3 - Classification bayésienne
% exercice_2.m
%--------------------------------------------------------------------------
clear
close all
clc
% Chargement des données de l'exercice 1
load resultats_ex1
azimuth = -72;
elevation = 42;
%% Estimation pour les pensées
% Estimation des paramètres de la loi normale (fonction estimation_mu_Sigma à coder)
[mu_pensees, Sigma_pensees] = estimation_mu_Sigma(X_pensees);
% Valeurs de la loi normale sur la grille
[V_pensees, denominateur_classe_pensees] = vraisemblance(r, v, mu_pensees, Sigma_pensees, -1);
% Représentation 3D de la loi normale
figure('Name','Vraisemblance de la classe "pensées"',...
'Position',[0.05*L,0.1*H,0.3*L,0.6*H])
hold on
surface(r,v,V_pensees,'EdgeColor',[.85 .65 .65],'FaceColor','none')
axis([r(1) r(end) v(1) v(end)])
view(azimuth,elevation)
rotate3d on
% Superposition des données d'apprentissage de la classe "pensées"
plot(X_pensees(:,1),X_pensees(:,2),'r*','MarkerSize',10,'LineWidth',2)
grid on
hx = xlabel('$\bar{r}$','FontSize',20);
set(hx,'Interpreter','Latex')
hy = ylabel('$\bar{v}$','FontSize',20);
set(hy,'Interpreter','Latex')
title('Estimation pour les pensees','FontSize',20)
legend('Vraisemblance empirique','Donnees d''apprentissage','Location','Best')
%% Estimation pour les oeillets
% Estimation des paramètres de la loi normale (fonction estimation_mu_Sigma à coder)
[mu_oeillets, Sigma_oeillets] = estimation_mu_Sigma(X_oeillets);
% Valeurs de la loi normale sur la grille
[V_oeillets, denominateur_classe_oeillets] = vraisemblance(r, v, mu_oeillets, Sigma_oeillets, -1);
% Représentation 3D de la loi normale
figure('Name','Vraisemblance de la classe "oeillets"',...
'Position',[0.35*L,0.1*H,0.3*L,0.6*H])
hold on
surface(r,v,V_oeillets,'EdgeColor',[.65 .85 .65],'FaceColor','none')
axis([r(1) r(end) v(1) v(end)])
view(azimuth,elevation)
rotate3d on
% Trace des données d'apprentissage de la classe "oeillets"
plot(X_oeillets(:,1),X_oeillets(:,2),'go','MarkerSize',10,'LineWidth',2)
grid on
hx = xlabel('$\bar{r}$','FontSize',20);
set(hx,'Interpreter','Latex')
hy = ylabel('$\bar{v}$','FontSize',20);
set(hy,'Interpreter','Latex')
title('Estimation pour les oeillets','FontSize',20)
legend('Vraisemblance empirique','Données d''apprentissage','Location','Best')
%% Estimation pour les chrysanthèmes
% Estimation des paramètres de la loi normale (fonction estimation_mu_Sigma à coder)
[mu_chrysanthemes, Sigma_chrysanthemes] = estimation_mu_Sigma(X_chrysanthemes);
% Valeurs de la loi normale sur la grille
[V_chrysanthemes, denominateur_classe_chrysanthemes] = vraisemblance(r, v, mu_chrysanthemes, Sigma_chrysanthemes, -1);
% Représentation 3D de la loi normale
figure('Name','Vraisemblance de la classe "chrysanthèmes"',...
'Position',[0.65*L,0.1*H,0.3*L,0.6*H])
hold on
surface(r,v,V_chrysanthemes,'EdgeColor',[.65 .65 .85],'FaceColor','none')
axis([r(1) r(end) v(1) v(end)])
view(azimuth,elevation)
rotate3d on
% Trace des données d'apprentissage de la classe "chrysanthèmes"
plot(X_chrysanthemes(:,1),X_chrysanthemes(:,2),'b+','MarkerSize',10,'LineWidth',2)
grid on
hx = xlabel('$\bar{r}$','FontSize',20);
set(hx,'Interpreter','Latex')
hy = ylabel('$\bar{v}$','FontSize',20);
set(hy,'Interpreter','Latex')
title('Estimation pour les chrysanthèmes','FontSize',20)
legend('Vraisemblance empirique','Données d''apprentissage','Location','Best')
clear azimuth elevation hx hy i j r_i x_centre
save resultats_ex2