首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的简单决策树(嵌套if-语句)?

Python中的简单决策树(嵌套if-语句)?
EN

Stack Overflow用户
提问于 2019-12-15 18:26:48
回答 1查看 1.3K关注 0票数 2

我想用JSON定义一个嵌套的if-statement,并使用Python进行测试。我正在考虑一个简单的带有嵌套分支的决策树,并进行递归测试。

伪码

代码语言:javascript
复制
# is_valid = (a == b OR a == a) AND c == c  # True
tree = {
    branches: [
        {
            value1: 'a',
            operator: '==',
            value2: 'b',
            child_connector: 'or'
            children: [
                {
                    value1: 'a',
                    operator: '==',
                    value2: 'a'
                }   
            ]
        },
        {
            connector: 'and',
            value1: 'c',
            operator: '==',
            value2: 'c'
        }
    ]
}

def is_tree_valid(tree):
    # TODO
    return

is_valid = is_tree_valid(tree)

当我在谷歌上搜索决策树时,我发现了很多与人工智能相关的信息,但往往太深了。我正在寻找一些简单的东西,并猜测这是一个常见的话题,并且经常被重新发明。

我希望有代码片段、模块或任何其他建议来完成is_tree_valid()

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-15 22:10:52

与算法一样,这也是关于输入的,但是将它们结合在一起才是合理的。要计算的表达式的最简单编码是天冬氨酸的直接转换。

代码语言:javascript
复制
{
  "operator": "and",
  "left": {
    "operator": "or",
    "left": {
      "operator": "==",
      "left": "a",
      "right": "b"
    },
    "right": {
      "operator": "==",
      "left": "a",
      "right": "a"
    }
  },
  "right": {
    "operator": "==",
    "left": "c",
    "right": "c"
  }
}

然后(在解析成明显的Python结构后),计算如下

代码语言:javascript
复制
def evaluate(node):
  try: op=node['operator']
  except TypeError: return node  # leaf
  l=evaluate(node['left'])
  r=node['right']  # not evaluated yet
  if op=='==': return l==evaluate(r)
  elif op=='and': return l and evaluate(r)
  elif op=='or': return l or evaluate(r)
  else: raise ValueError("unknown operator: %r"%op)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59346864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档