贝叶斯最优分类器的一个实例MATLAB代码

clc;clear all;close all;


%训练集
SampleMark={'咳嗽','头晕','体温','流感'}
Sample={
    '是','是','正常',  '否';....
    '是','是','高',    '是';....
    '是','是','非常高','是';....
    '否','是','正常',  '否';....
    '否','否','高',    '否';....
    '否','是','非常高','是';....
    '是','否','高',    '是';....
    '否','是','正常',  '否';....
    }


%流感为 是 的与 否 的两类子集
IsFlu=Sample(strmatch('是',Sample(:,4)),:);
NotFlu=Sample(strmatch('否',Sample(:,4)),:);


%先验概率
N1=size(IsFlu,1);
N2=size(NotFlu,1);


Pw1=N1/(N1+N2);
Pw2=N2/(N1+N2);


%咳嗽似然度
%采用m-估计,计算各属性先验概率
x1=size(strmatch('是',Sample(:,1)),1);
x2=size(strmatch('否',Sample(:,1)),1);
p1=x1/(x1+x2);
p2=x2/(x1+x2);


n1=size(strmatch('是',IsFlu(:,1)),1);
n2=size(strmatch('否',IsFlu(:,1)),1);


PXwi(1,1:2)=[(n1+1)/(n1+n2+p1) (n2+1)/(n1+n2+p2)];


n1=size(strmatch('是',NotFlu(:,1)),1);
n2=size(strmatch('否',NotFlu(:,1)),1);


PXwi(2,1:2)=[(n1+1)/(n1+n2+p1) (n2+1)/(n1+n2+p2)];


%头晕似然度
%采用m-估计,计算各属性先验概率
x1=size(strmatch('是',Sample(:,2)),1);
x2=size(strmatch('否',Sample(:,2)),1);
p1=x1/(x1+x2);
p2=x2/(x1+x2);


n1=size(strmatch('是',IsFlu(:,2)),1);
n2=size(strmatch('否',IsFlu(:,2)),1);


PXwi(1,3:4)=[(n1+1)/(n1+n2+p1) (n2+1)/(n1+n2+p2)];


n1=size(strmatch('是',NotFlu(:,2)),1);
n2=size(strmatch('否',NotFlu(:,2)),1);


PXwi(2,3:4)=[(n1+1)/(n1+n2+p1) (n2+1)/(n1+n2+p2)];


%体温似然度
%采用m-估计,计算各属性先验概率
x1=size(strmatch('正常',Sample(:,3)),1);
x2=size(strmatch('高',Sample(:,3)),1);
x3=size(strmatch('非常高',Sample(:,3)),1);
p1=x1/(x1+x2+x3);
p2=x2/(x1+x2+x3);
p3=x3/(x1+x2+x3);


n1=size(strmatch('正常',IsFlu(:,3)),1);
n2=size(strmatch('高',IsFlu(:,3)),1);
n3=size(strmatch('非常高',IsFlu(:,3)),1);


PXwi(1,5:7)=[(n1+p1)/(n1+n2+n3+p1) (n2+p2)/(n1+n2+n3+p2) (n3+p3)/(n1+n2+n3+p3)];


n1=size(strmatch('正常',NotFlu(:,3)),1);
n2=size(strmatch('高',NotFlu(:,3)),1);
n3=size(strmatch('非常高',NotFlu(:,3)),1);
PXwi(2,5:7)=[(n1+p1)/(n1+n2+n3+p1) (n2+p2)/(n1+n2+n3+p2) (n3+p3)/(n1+n2+n3+p3)];


%似然度矩阵
PXwi_Mark={'是','否','是','否','正常','高','非常高'}
PXwi


%测试样列,预测是否流感
Test={'否','是','非常高'}
%计算后验概率


PwiX=PXwi(:,2).*PXwi(:,3).*PXwi(:,7);
if 1==find(PwiX==max(PwiX))
    fprintf('是否流感:是\n');
else
    fprintf('是否流感:否\n');
end
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值