最小错误率的贝叶斯分类

实验原理

利用贝叶斯后验概率确定分类:
在这里插入图片描述

实验内容

在这里插入图片描述

实验代码

M=50;% M 为最大的类数
% 已知类别样本 15 个 (身高, 体重, 类别)。 1-男, 2-女
n=15;
pattern=[170, 68, 1;
130, 66, 2;
180, 71, 1;
190, 73, 1;
160, 70, 2;
150, 66, 1;
190, 68, 1;
 210, 76, 1;
100, 58, 2;
170, 75, 1;
140, 62, 1;
150, 64, 2;
120, 66, 2;
150, 66, 1;
130, 65, 1] ;
% 未知类别样本 4 个
X= [140, 70, 0;
150, 60, 0;
145, 65, 0;
160, 75, 0] ;
K=4; % 未知类别样本个数
pattern % 显示 pattern
X % 显示未知类别的样本
C=2; % 类别总数 C=2
num=zeros(1, C) ;
%数组 num(i) 存放第 i 类的样本数(i=1. . . C
for i=1:n % 统计每类样本数
num(pattern(i, 3) )=num(pattern(i, 3) ) +1;
end
for i=1:C % 输出每类样本数
fprintf(' %d 类样本数= %d \n' , i, num(i) )
end
% 计算每类的先验概率
for i=1:C
P(i) =num(i) /n;
% 输出每类的先验概率
fprintf(' %d 类的先验概率=%. 2f \n' , i, P(i) )
end
% float PW1[M] , PW2[M] ; 存放后验概率数组
% float height, weight; 身高-体重
% 对未知类别的样本进行分类判断
for k=1: K % 对未知类别样本数据: 身高-体重加以处理
fprintf(' 第%d 个样本: %d, %d\n' , k, X(k, 1) , X(k, 2) )
height=X(k, 1) ;
weight=X(k, 2) ;
num1=0;
for i=1: n
if (pattern(i, 1) ==height&pattern(i, 3) ==1)
num1=num1+1;
end
end
 if (num1==0) % 防止 0 概率, 分子分母均作处理: 分子加 1, 分母加类别数或不同取值个数
PW1(1)=1/(num(1) +2) ;
else
PW1(1) =(num1+1) /(num(1) +2) ;
end
num1=0;
for i=1: n
if (pattern(i, 2) ==weight&pattern(i, 3) ==1)
num1=num1+1;
end
end
if (num1==0) % 防止 0 概率, 分子分母均作处理: 分子加 1, 分母加类别数或不同取值个数
PW1(2) =1/(num(1) +2) ;
else
PW1(2) =(num1+1) /(num(1) +2);
end
num2=0;
for i=1: n
if (pattern(i, 1) ==height&pattern(i, 3) ==2)
num2=num2+1;
end
end
if (num2==0)
PW2(1)=1/(num(2) +2) ;
else
PW2(1) =(num2+1) /(num(2)+2) ;
end
num2=0;
for i=1: n
if (pattern(i, 2) ==weight&pattern(i, 3) ==2)
num2=num2+1;
end
end
if (num2==0)
PW2(2) =1/(num(2) +2) ;
else
PW2(2) =(num2+1) /(num(2) +2);
end
PWT1=PW1(1) *PW1(2) *P(1) ; % 计算属于第一类的似然概率*先验概率
PWT2=PW2(1) *PW2(2) *P(2) ; % 计算属于第二类的似然概率*先验概率
fprintf(' 属于第一类的似然概率*先验概率(后验概率*P(X) ) = %. 2f \n' , PWT1)
fprintf(' 属于第二类的似然概率*先验概率(后验概率*P(X) )= %. 2f \n' , PWT2)
 if (PWT1>PWT2)
fprintf(' %d -th pattern belongs to 1\n' , k)
elseif (PWT1<PWT2)
fprintf(' %d -th pattern belongs to 2\n' , k)
else
fprintf(' %d -th pattern belongs to 1 or 2 is equal\n' , k)
end
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值