如何使用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

使用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中创建了一个多类分类项目。该项目可以对…

发表回复

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