📄 bayestrain.m
字号:
% 构建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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -