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

我想在JSON中定义一个嵌套的if语句,并用Python来测试它。我在考虑一个简单的决策树,带有嵌套的分支,并递归地进行测试。

伪代码

# is_valid = (a == b OR a == a) AND c == c  # Truetree = {    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    returnis_valid = is_tree_valid(tree)

当我在谷歌上搜索决策树时,我发现了很多与AI相关的资料,但通常过于深入。我在寻找一些简单的东西,并且猜测这是一个常见的话题,并且经常被重新发明。

我很感激能得到代码片段、模块或任何其他建议来完成is_tree_valid()

提前感谢!


回答:

这既关乎输入也关乎算法,但将它们一起设计是合理的。最简单的表达式编码是直接翻译抽象语法树(AST)

{  "operator": "and",  "left": {    "operator": "or",    "left": {      "operator": "==",      "left": "a",      "right": "b"    },    "right": {      "operator": "==",      "left": "a",      "right": "a"    }  },  "right": {    "operator": "==",    "left": "c",    "right": "c"  }}

然后(在解析成明显的Python结构后),评估看起来像这样

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)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注