您的位置:首页 > 其它

机器学习(周志华) 参考答案 第七章 贝叶斯分类器 7.6

2016-08-10 00:01 896 查看

机器学习(周志华) 参考答案 第七章 贝叶斯分类器 7.6

机器学习(周志华西瓜书) 参考答案 总目录

http://blog.csdn.net/icefire_tyh/article/details/52064910

机器学习(周志华) 参考答案 第七章 贝叶斯分类器

http://blog.csdn.net/icefire_tyh/article/details/52167273

7.6.试编程实现AODE分类器,并以西瓜数据集3.0为训练集,并对“测1”样本进行分类。

这个题目和3.3差不多,只是用了半朴素的贝叶斯分类器,假设每个节点都作为其他全部节点的超节点。

虽然阀值通常设为30,但这里显然没有阀值的限制。

计算结果为正的概率是0.099,为负的概率是0.000458。

由于连续属性的联合概率太麻烦,这里只对离散属性做处理和判断。

x = xlsread('C:\Users\icefire\Desktop\ml\西瓜3.xlsx', 'sheet1', 'A1:Q6');
y = xlsread('C:\Users\icefire\Desktop\ml\西瓜3.xlsx', 'sheet1', 'A9:Q9');

%测试用例
test=x(:,1);
%各参数取值
pn=[3; 3; 3; 3; 3; 2];

pc=0;   %为正的概率
nc=0;   %为正的概率

%对6种离散参数遍历
for i=1:6
c=zeros(2,1);
%累积次数,计算p(xi|c)
for j=1:17
if(x(i,j)==test(i))
c(y(j))=c(y(j))+1;
end
end
tpc=1;
tnc=1;
%累积次数,计算p(xj|c,xi)
for j=1:6
ct=zeros(2,1);
for k=1:17
if(x(i,k)==test(i) && x(j,k)==test(j))
ct(y(j))=ct(y(j))+1;
end
end
tpc = tpc * (ct(1)+1)/(c(1)+pn(j));
tnc = tnc * (ct(2)+1)/(c(2)+pn(j));
end
pc=pc+(c(1)+1)/(8+pn(i))*tpc;
nc=nc+(c(2)+1)/(9+pn(i))*tnc;
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习