贝叶斯分类器代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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