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

54 lines
1.4 KiB
Matlab
Executable file

%--------------------------------------------------------------------------
% ENSEEIHT - 1SN - Analyse de données
% TP3 - Classification bayésienne
% vraisemblance.m
%--------------------------------------------------------------------------
% calcule la vraisemblance p(x, w_i) et le dénominateur de classe
% x est donné par ses coordonnées sur la grille(r,v)
% w_i est caractérisée par mu_i et Sigma_i
% le dénominateur de classe peut être
% - calculé (et retourné comme résultat) si denominateur_classe_i = -1
% - ou fourni
function [P, denominateur] = vraisemblance(r, v, mu_i, Sigma_i, denominateur_classe_i)
if (denominateur_classe_i == -1)
% génération des cartes de vraisemblances :
% nb_r indépendant de nb_v (tailles de grilles)
nb_r = length(r);
nb_v = length(v);
P = zeros(nb_r,nb_v);
for i = 1:nb_r
for j = 1:nb_v
x_centre = [r(i);v(j)] - mu_i;
P(j,i) = exp(-(x_centre.')*(Sigma_i \ x_centre)/2);
end
end
denominateur = 2*pi*sqrt(det(Sigma_i));
else
% calcul de vraisemblances pour des vecteurs r et v associés aux données
% avec dénominateur déjà connu : nb_r = nb_v = nombre de données
nb_r = length(r);
P = zeros(nb_r,1);
for i = 1:nb_r
x_centre = [r(i);v(i)] - mu_i;
P(i) = exp(-(x_centre.')*(Sigma_i \ x_centre)/2);
end
denominateur = denominateur_classe_i;
end
P = P / denominateur;
end