从 Python 中的数据学习二元决策图 (BDD)

问题描述

是否可以从数据中学习二元决策图 (BDD)(以机器学习方式)?如果是这样,如何?

背景:我在 Python 中看到了一些工具来完成此任务,例如,带有 scikit-learn 的决策树 (DT),但我没有看到任何用于 BDD 的工具。

举个例子,我想做的是:

enter image description here

前三列对应'输入'数据集(xi),标签为(y)。 N 对应于计数,例如您可以使用后者来计算准确度。请注意,这不是 cut sets 矩阵。在中间,您会看到一个对应的 BDD(这是我想要获得的图表),在右侧是一个对应的 DT。

解决方法

如果目标是将输入-输出评估表转换为 BDD,表示由这些评估定义的布尔函数,那么是可能的(这不是任何形式的学习)。例如,使用 Python 包 dd:

from dd import autoref


bdd = autoref.BDD()
bdd.declare('x1','x2','x3')
# These are the assignments to the input variables
# where the Boolean function is TRUE (the y).
# The assignments where the Boolean function is FALSE
# are not used in the disjunction below.
data = [
    dict(x1=True,x2=False,x3=True),dict(x1=True,x2=True,x3=False),x3=True)]
u = bdd.false
for d in data:
    u |= bdd.cube(d)  # disjunction so far
bdd.dump('example.png',roots=[u])

我们得到以下包含 complemented edges 的图表:

enter image description here

dd 可以从 PyPI 安装:

pip install dd

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...