bayestrain.m

来自「脱机手写体识别Matlab源程序 包括特征提取、bayes分类器、K近邻分类及」· M 代码 · 共 36 行

M
36
字号
% 构建Bayes分类器
% 即求每一个类别的均值和协方差矩阵
% 样本数量不够,目前处理方法是假设各类别的协方差矩阵相同
% 
% trainX      训练样本特征矩阵
% trainY      训练样本类标
% MI          各类别的均值 
% SIGMA       各类别的协方差矩阵
% Pk          各类别的先验概率
function [MI,SIGMA,Pk]=BayesTrain(trainX,trainY)
d=size(trainX,1);         % 特征向量长度
N=size(trainX,2);         % 训练样本数量
c=length(unique(trainY)); % 类别数量

classLabMin=min(trainY);  % 类标最小值
classLabMax=max(trainY);  % 类标最大值


MI=zeros(d,c);            % 均值
SIGMA=zeros(d,d);         % 协方差矩阵
for j=classLabMin:classLabMax
    classJ=find(trainY==j);  % 第j个类别
    Pk(j-classLabMin+1)=length(classJ)/N; % 计算先验概率
    MI(:,j)=sum(trainX(:,classJ),2)/length(classJ);
end

u=mean(MI,2);             % 所有类别的均值,?
for i=1:N
    SIGMA=SIGMA+(trainX(:,i)-u)*((trainX(:,i)-u).');
end
SIGMA=SIGMA./N;           % 求平均

% 目前假设各类别的协方差矩阵相同,将上述SIGMA扩充C倍
SIGMA=repmat(SIGMA,1,c);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?