贝叶斯分类器代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

相关文档
最新文档