首页  >  文章  >  后端开发  >  我们如何以编程方式从 Scikit-Learn 决策树中提取决策规则,同时避免常见陷阱?

我们如何以编程方式从 Scikit-Learn 决策树中提取决策规则,同时避免常见陷阱?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-26 07:27:02876浏览

How Can We Programmatically Extract Decision Rules from Scikit-Learn Decision Trees While Avoiding Common Pitfalls?

从 Scikit-Learn 决策树中提取决策规则

在机器学习中,决策树通常用于捕获决策过程决策规则的形式。这些规则可以表示为文本列表,让您清楚地了解决策树中的底层逻辑。

以编程方式提取决策规则

Python 函数 tree_to_code 可以实现从经过训练的决策树中提取决策规则。它将经过训练的树和特征名称列表作为输入,并生成一个表示决策规则的有效 Python 函数。

<code class="python">def tree_to_code(tree, feature_names):
    # ...</code>

生成的函数与决策树具有相同的结构,使用嵌套 if -else 语句代表决策路径。提供输入数据后,该函数将返回相应的输出。

示例输出

对于尝试返回其输入(0 到 10 之间的数字)的决策树),生成的代码可能如下所示:

<code class="python">def tree(f0):
  if f0 <= 6.0:
    if f0 <= 1.5:
      return [[ 0.]]
    else:  # if f0 > 1.5
      if f0 <= 4.5:
        if f0 <= 3.5:
          return [[ 3.]]
        else:  # if f0 > 3.5
          return [[ 4.]]
      else:  # if f0 > 4.5
        return [[ 5.]]
  else:  # if f0 > 6.0
    if f0 <= 8.5:
      if f0 <= 7.5:
        return [[ 7.]]
      else:  # if f0 > 7.5
        return [[ 8.]]
    else:  # if f0 > 8.5
      return [[ 9.]]</code>

其他方法的局限性

从决策树中提取决策规则的一些常见陷阱包括:

  • 错误地使用tree_.threshold == -2来识别叶子节点(并不总是可靠)
  • 在递归函数中包含不必要的多个if-else语句
  • 由于叶子而崩溃特征值为 -2
的节点

以上是我们如何以编程方式从 Scikit-Learn 决策树中提取决策规则,同时避免常见陷阱?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn