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

从Python中的数据学习二进制决策图(BDD),python,machine-learning,machine-learning-model,binary-decision-diagram,Python,Machine Learning,Machine Learning Model,Binary Decision Diagram,是否可以从数据中学习二进制决策图(BDD)(如机器学习方式)?如果是,怎么做 背景:我在Python中看到了一些用于完成这项任务的工具,例如使用决策树(Decision Trees,DTs),但我没有看到任何用于BDD的工具 举个例子,我想做的是: 前三列对应于“输入”数据集(xi),标签为(y)。N对应于计数,您可以使用后者来计算精度。请注意,这不是一个矩阵。在中间,你可以看到一个对应的BDD(这是我想要得到的图表),在右边是一个对应的DT。如果目标是将输入输出赋值表转换为一个BDD,它表示

是否可以从数据中学习二进制决策图(BDD)(如机器学习方式)?如果是,怎么做

背景:我在Python中看到了一些用于完成这项任务的工具,例如使用决策树(Decision Trees,DTs),但我没有看到任何用于BDD的工具

举个例子,我想做的是:


前三列对应于“输入”数据集(xi),标签为(y)。N对应于计数,您可以使用后者来计算精度。请注意,这不是一个矩阵。在中间,你可以看到一个对应的BDD(这是我想要得到的图表),在右边是一个对应的DT。

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

从dd导入自动引用
bdd=autoref.bdd()
bdd.声明('x1','x2','x3')
#这些是输入变量的赋值
#其中布尔函数为真(y)。
#布尔函数为FALSE的赋值
#在下面的析取中不使用。
数据=[
dict(x1=真,x2=假,x3=真),
dict(x1=True,x2=True,x3=False),
dict(x1=True,x2=True,x3=True)]
u=bdd.false
对于数据中的d:
u |=bdd.立方体(d)#到目前为止的析取
bdd.dump('example.png',根=[u])
我们得到以下图表,其中包括:

软件包
dd
可以通过以下方式安装:

pip安装dd

非常感谢您的回答。我有两个问题要问你:(1)是否有可能显式地有两个端点节点(即true/false)?(2) 如何使用模型来评估实例?(例如,类似bdd.evaluate([x1=True,x2=False,x3=False]),对于这种情况,答案应该是False或0)。实现使用补充边(因此一个端点节点)。可以使用以下代码绘制没有补充边的BDD(因此有两个端点节点)。为了评估BDD,假设BDD支持中的所有变量都是赋值的,可以使用方法
BDD.let
。例如,
bdd.let(dict(x1=True,x2=False,x3=False),u)==bdd.True
。文档可在以下位置找到:。