机器学习(周志华)学习笔记七:贝叶斯分类器(下)

本文介绍了机器学习中的贝叶斯分类器,重点讲解了BIC算法和EM算法在贝叶斯网模型选择中的应用。BIC算法用于寻找最简洁的模型描述数据,EM算法则处理数据缺失情况。文章讨论了两种算法对贝叶斯网结构的影响,并提出了关于贝叶斯网结构、查询及权值保存的思考。
摘要由CSDN通过智能技术生成

一、BIC算法

在贝叶斯网中,BIC算法是衡量贝叶斯网“有效性”的标准。BIC算法的目的是找到一个能以最短编码长度描述训练数据的模型。
BIC算法的公式如下:
BIC公式
其中,
详细

    def draw_net_as_bic(self):
        """按照BIC算法构建贝叶斯网,贪心法,最小化BIC"""
        step = 0
        while step <= self.max_step:
            bic_pre = self.calculate_bic()
            bic_best = bic_pre
            point_list_pre = self.copy_point_list(self.point_list)
            point_list_best = self.copy_point_list(self.point_list)
            # 对单个结点遍历修改、删除、增加连线,寻找一个最佳方式,暂时没有好的思路
            # 思路1:从属性0到属性6逐个遍历,每次遍历最多只改变结点的一条连线
            for i in range(data.attrs_count):
                # 能做的只有,增加、删除 1 个子
                parents_index = self.point_list[i]['from'].copy()
                children_index = self.point_list[i]['to'].copy()
                # 增加一个子
                for j in range(data.attrs_count):
                    if j != i and j not in parents_index and j not in children_index:
                        # 保证不是自己、不是父、不是旧子
                        self.add_line(i, j)
                        bic_new = self.calculate_bic()
                        if bic_new < bic_best:
                            # 记录最好情况
             
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌哒哒虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值