失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 实验三 最小错误率的贝叶斯分类

实验三 最小错误率的贝叶斯分类

时间:2023-08-23 01:31:13

相关推荐

实验三 最小错误率的贝叶斯分类

最小错误贝叶斯分类器原理

在对模式进行识别时,在存在模棱两可的情况下,任何决策都存在判别错误的可能性。最小错误贝叶斯决策就是以错误率为自小的分类规则。使用p(e)表示错误概率,那么最小错误贝叶斯分类器的目的就是minp(e).

对于两种模式,其中:

即x属于第一类,判别为第二类的概率,x属于第二类,判别为第一类的概率。

可以看出使错误率最小的决策就是使后验概率最大的决策,因此最小错误率贝叶斯决策可写为:

其中,后验概率的计算使用贝叶斯公式计算,因此要已知先验概率p(ωi)以及类条件概率密度p(x|wi)。

实验问题利用贝叶斯后验概率确定分类:

实验内容:

设有19人进行体检,结果如下表。但事后发现4人忘了写性别,试问,这4人是男是女?

C=2。男—1类,女—2类。

实验代码:

clc;clear;

male_data = importdata('male.txt');

female_data = importdata('female.txt');

male_avr = mean(male_data);

female_avr = mean(female_data);

pw1_1 = 10/15; pw2_1 = 1-pw1_1;

% 协方差矩阵

juzhen_male = cov(male_data); juzhen_male_det = det(juzhen_male);

juzhen_male_ni = juzhen_male^(-1);

juzhen_female = cov(female_data);juzhen_female_det = det(juzhen_female);

juzhen_female_ni = juzhen_female^(-1);

pw1_1 = 10/15; pw2_1 = 1-pw1_1;%根据样本的数据算出来的

%读test2

test2 = fopen('test2.txt');

T2=textscan(test2,'%d%d%s','Delimiter',{':',';'});

fclose(test2);

test2_H=double([T2{1,1}]);

test2_W=double([T2{1,2}]);

man_woman = char([T2{1,3}]);

hei_wei = [test2_H,test2_W];

PXk_W1 = zeros(1,300);

PXk_W2 = zeros(1,300);

error =0;num_woman = 0;num_man = 0;

% 红色代表女的,蓝色代表男的 如果判断错了,弄成黑色星号

figure(1);

for i = 1:300

if(man_woman(i)=='F')

num_woman = num_woman +1;

plot(test2_H(i),test2_W(i),'r.');

else

num_man = num_man +1;

plot(test2_H(i),test2_W(i),'b.');

end

hold on;

PXk_W1(i) = 1/sqrt(4*pi*pi*juzhen_male_det)*exp(-0.5*(hei_wei(i,:)-male_avr)*juzhen_male_ni* (hei_wei(i,:)-male_avr)' );

PXk_W2(i) = 1/sqrt(4*pi*pi*juzhen_female_det)*exp(-0.5*(hei_wei(i,:)-female_avr)*juzhen_female_ni* (hei_wei(i,:)-female_avr)' );

PW1_Xi = PXk_W1(i)*pw2_1;

PW2_Xi = PXk_W2(i)*pw1_1;

if(PW1_Xi>PW2_Xi)

fprintf('第 %d个是男的\n',i);

if(man_woman(i)=='F')

error = error+1;

plot(test2_H(i),test2_W(i),'k*');

end

else

fprintf('第 %d个是女的\n',i);

if(man_woman(i)=='M')

error= error+1;

plot(test2_H(i),test2_W(i),'k*');

end

end

end

fprintf('共测试了%d个数据\r男性为%d 女性为%d\r',length(man_woman),num_man,num_woman)

fprintf('test2\n ')

fprintf('总 数 %5d\n ',length(man_woman))

fprintf('男 性 %5d\n ',num_man)

fprintf('女 性 %5d\n ',num_woman)

如果觉得《实验三 最小错误率的贝叶斯分类》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。