编写决策树的简单库

BDT的Python项目详细描述


这是一个实现二叉决策树的简单库。

在计算机科学中,二元决策图(bdd)或分支 程序是用来表示布尔值的数据结构 功能。在更抽象的层次上,bdd可以被认为是 集合或关系的压缩表示。不像其他压缩的 表示,操作直接在压缩的 表现,即没有减压。

下面的树就是一个简单的例子:alt text

每个节点都有一对子节点,其中一个子节点与 当父函数内部的函数返回一个真值时,以及 当父函数返回false时,则与other关联。

使用

您可以手动创建节点作为python对象,如 此示例:

frombdt.treeimportBDTfrombdt.nodeimportNodetrue_node=Node('True Node')false_node=Node('False Node')head_node=Node('Head Node',lambdavar:var<10,true_child=true_node,false_child=false_node)tree=BDT(head_node)

另一个选项是通过传递python字典来创建树:

frombdt.toolsimporttree_from_dicttree_dict={'head':'Head Node','variables':['withd','height'],'nodes':[{'name':'Head Node','function':'withd * height < 50','true_child':'True Node','false_child':'False Node'},{'name':'True Node','function':'withd * height < 25','true_child':'True True Node','false_child':'True False Node'},{'name':'False Node','function':'withd * height < 100','true_child':'False True Node','false_child':'False False Node'},{'name':'True True Node','function':'None','true_child':'None','false_child':'None'},{'name':'True False Node','function':'None','true_child':'None','false_child':'None',},{'name':'False True Node','function':'None','true_child':'None','false_child':'None'},{'name':'False False Node','function':'None','true_child':'None','false_child':'None'},]}tree=tree_from_dict(tree_dict)

最后一种形式是从一个json文件加载它,该文件与 上一个词典,并通过使用加载:

importjsonfrombdt.toolsimporttree_from_jsonjson_data=open('{PATH_TO_FILE/file.json}','r')tree=tree_from_json(json_data)

最后一种形式是从一个json文件加载它,该文件与 上一个词典,并通过使用加载:

importjsonfrombdt.toolsimporttree_from_jsonjson_data=open('{PATH_TO_FILE/file.json}','r')tree=tree_from_json(json_data)

要遍历创建的树,您可以这样做:

importjsonfrombdt.toolsimporttree_from_jsonjson_data=open('{PATH_TO_FILE/file.json}','r')tree=tree_from_json(json_data)tree.set_parameters({'withd':25,'height':25})fornodeintree:printnode.name

set_parameters函数允许您初始化运行所需的值 每个节点内的布尔函数。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
多线程Java易失性和可见性   如何正确组合循环(Java)?   java在外部库中设置CDI   java使用enum类方法中类的HashSet   java如何整理节点或文档字段?   是否在java中接受的方法调用中传递“this”   安卓无法bluid cordova应用程序:JDK的java需求检查失败   java从Spring更新web UI   java巨大的分配:如果发生巨大的分配,我如何要求jvm打印日志   java Tomcat身份验证要求重新登录,即使浏览器尚未关闭   java事务原子性与MySQL、MongoDB、RabbitMQ   java什么导致RTTI违反OpenClosed原则?   java将ISBN10转换为ISBN13   在MacOS X上用Eclipse Mars远程调试Tomcat 7   java在安卓中添加自定义框架   java Android在文件中写入最后一个值   java我想比较ArrayList<Player>数组中的每个元素和int[]数组   由@Version annotated int不递增引起的java OptimisticLockException   java SpelEvaluationException:EL1008E:在Thymeleaf应用程序中