【问题标题】:Can I view or export the nodes of a decision tree in a text format?我可以以文本格式查看或导出决策树的节点吗?
【发布时间】:2018-05-04 08:40:42
【问题描述】:

我正在通过 scikit-learn 中的 RandomForestClassifier 使用随机森林,并希望检查生成的决策树节点上的决策标准。我可以看到一种在拟合后访问特定DecisionTreeClassifier 的方法(通过RandomForestClassifier.ensemble_[i]),我可以看到一种导出树以生成graphviz 图像的方法(通过sklearn.tree.export_graphviz())。但是,我看不到一种比图像更简单的方式来描述树 - 特别是我想要一种人类可读的文本格式。

特别是:graphviz 树图像在每个节点上包含描述该节点的决策标准和结果的文本。我想要的是能够生成每个节点的文本,以及哪些节点是哪些节点的子节点的规范,但就像文本一样 - 不嵌入到图像或点文件中。从技术上讲,点文件是文本,但它是为渲染图像而设计的,如果您只想了解树,则很难阅读。 scikit-learn 中是否有任何导出函数会产生某种人类可读的DecisionTreeClassifier 描述?

我的后备计划是通过修改sklearn.tree.export_graphviz() 源来编写我自己的函数,但我想知道是否已经存在某些东西。

【问题讨论】:

标签: python scikit-learn


【解决方案1】:

发布这个作为答案,因为我无法发布 cmets。

这个link 是一个scikit 学习方法sklearn.tree.export_text,它应该根据我从页面中获取的这个代码块输出文本:

>>> from sklearn.datasets import load_iris
>>> from sklearn.tree import DecisionTreeClassifier
>>> from sklearn.tree.export import export_text
>>> iris = load_iris()
>>> X = iris['data']
>>> y = iris['target']
>>> decision_tree = DecisionTreeClassifier(random_state=0, max_depth=2)
>>> decision_tree = decision_tree.fit(X, y)
>>> r = export_text(decision_tree, feature_names=iris['feature_names'])
>>> print(r)
|--- petal width (cm) <= 0.80
|   |--- class: 0
|--- petal width (cm) >  0.80
|   |--- petal width (cm) <= 1.75
|   |   |--- class: 1
|   |--- petal width (cm) >  1.75
|   |   |--- class: 2
...

缺点是我尝试使用它,但发生了这种情况:

from sklearn.tree.export import export_text
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ImportError: cannot import name 'export_text'

也许你能得到比我更好的结果,如果可以,请告诉我。我正在使用 scikit-learn==0.20.3

【讨论】:

    猜你喜欢
    • 2016-05-22
    • 2022-07-29
    • 2013-10-14
    • 2016-08-20
    • 1970-01-01
    • 2018-09-20
    • 2015-01-31
    • 1970-01-01
    • 2020-01-21
    相关资源
    最近更新 更多