📄 bayes.m
字号:
% 测试Bayes分类器
%
% 给定数据的高斯分布参数(均值与协方差)和测试数据
% 计算bayes分类器对测试数据的输出
%
% X 需要分类的样本数据,dim X N 矩阵,dim为特征维数,N为样本容量
% MI 类样本均值,dim X c 矩阵,c为类别数量
% SIGMA 类样本协方差矩阵
% SIGMA=[sigma_1,sigma_2,...,sigma_K], sigma_j是第j类的协方差矩阵
% Pk 类别先验概率,即样本的分布情况,每个类别所占比例,1Xc
function [I,Pkx]=Bayes(X,MI,SIGMA,Pk)
% 判决函数为后验概率 % PR lecture 2 ,ppt9
K=size(MI,2); % number of classes
DIM=size(X,1); % dimension
N=size(X,2); % number of observations
Pkx=zeros(N,K);
for k=1:K,
logPk=log(Pk(k));
halfLogDetSigma=0.5*log(det(SIGMA(:,(k-1)*DIM+1:k*DIM)));
Pkx(:,k)=repmat(logPk,N,1)-repmat(halfLogDetSigma,N,1)-0.5*...
mahalan(X,MI(:,k), SIGMA(:,(k-1)*DIM+1:k*DIM))';
end
Pkx=Pkx';
[tmp,I]=max(Pkx);
% 计算 Mahalanobis 距离 (即马氏距离)
% see: lecture 2 ,ppt 9
% X 样本矩阵
% mi 均值
% sigma 协方差矩阵
function dist = mahalan(X,mi,sigma)
K=size(X,2);
DIM=size(X,1);
mi=mi(:);
% computes it for all the points in matrix X
if DIM == 1,
dist=((X-repmat(mi,1,K))'*inv(sigma).*(X-repmat(mi,1,K))')';
else
dist=sum( ((X-repmat(mi,1,K))'*inv(sigma).*(X-repmat(mi,1,K))')');
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -