📄 bayesleastrisk.m
字号:
%函数名称:bayesleastrisk()
%参数:sample:待识别样品特征
%返回值:y:待识别样品所属类别
%函数功能:最小风险的贝叶斯分类器
function y=bayesleastrisk(sample)
clc;
load templet pattern;
%对样品库和待测样品进行主成分分析
[pcapat,pcasamp]=pcapro(sample);
temp=0;
for i=1:10
pattern(i).feature=pcapat(:,temp+1:temp+pattern(i).num);
temp=temp+pattern(i).num;
end
s_cov=[];
s_inv=[];
s_det=[];
for i=1:10
s_cov(i).dat=cov(pattern(i).feature');%求各类别的协方差矩阵
s_inv(i).dat=inv(s_cov(i).dat);%求协方差矩阵的逆矩阵
s_det(i)=det(s_cov(i).dat);%求协方差矩阵的行列式
end
sum1=0;
p=[];
for i=1:10
sum1=sum1+pattern(i).num%求样品库样本总数
end
for i=1:10
p(i)=pattern(i).num/sum1;%求各类别的先验概率
end
h=[];
mean_sap=[];
for i=1:10
mean_sap(i).dat=mean(pattern(i).feature')'%求每一类样品的特征均值
end
%计算各类别的后验概率
for i=1:10
h(i)=(pcasamp-mean_sap(i).dat)'*s_inv(i).dat*(pcasamp-mean_sap(i).dat)...
*(-0.5)+log(p(i))+log(abs(s_det(i)))*(-0.5);
end
loss=ones(10)-diag(diag(ones(10)));
risk=0;
m=[];
%计算最小风险
for i=1:10
m=loss(i,:);
risk(i)=m*h';
end
[minval minpos]=min(risk);
y=minpos-1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -