如何使用scikit-learn查找决策树的分割属性?

我一直在探索scikit-learn,使用熵和基尼系数作为分割标准来创建决策树,并研究它们的差异。

我的问题是,如何“打开引擎盖”,找出树在每个层级上具体分割的属性,以及它们相关的信息值,这样我就可以看到两种标准在选择上的不同之处?

到目前为止,我已经探索了文档中概述的9种方法。它们似乎无法访问这些信息。但这些信息肯定是可以访问的吧?我设想有一个列表或字典,包含节点和增益的条目。


回答:

直接来自文档( http://scikit-learn.org/0.12/modules/tree.html ):

from io import StringIOout = StringIO()out = tree.export_graphviz(clf, out_file=out)

StringIO 模块在Python3中已不再支持,取而代之的是导入 io 模块。

决策树对象中还有一个 tree_ 属性,允许直接访问整个结构。

你可以简单地读取它

clf.tree_.children_left #左子节点数组clf.tree_.children_right #右子节点数组clf.tree_.feature #节点分割特征数组clf.tree_.threshold #节点分割点数组clf.tree_.value #节点值数组

更多细节请查看 导出方法的源代码

一般来说,你可以使用 inspect 模块

from inspect import getmembersprint( getmembers( clf.tree_ ) )

来获取对象的所有元素

来自sklearn文档的决策树可视化

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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