您如何访问 Python 的 scikit-learn 中的树深度?
How do you access tree depth in Python's scikit-learn?
我正在使用 scikit-learn 创建随机森林。但是,我想找到每棵树的个体深度。这似乎是一个简单的属性,但根据文档,(http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html) 没有办法访问它。
如果这不可能,是否可以通过决策树模型访问树深度?
如有任何帮助,我们将不胜感激。谢谢。
RandomForestClassifier
的每个实例都有一个 estimators_
属性,它是 DecisionTreeClassifier
个实例的列表。文档显示 DecisionTreeClassifier
的一个实例有一个 tree_
属性,它是(我相信没有记录的)Tree
class 的一个实例。解释器中的一些探索表明每个 Tree
实例都有一个 max_depth
参数, 看起来 是您正在寻找的参数——同样,它没有记录。
无论如何,如果 forest
是 RandomForestClassifier
的实例,那么:
>>> [estimator.tree_.max_depth for estimator in forest.estimators_]
[9, 10, 9, 11, 9, 9, 11, 7, 13, 10]
应该可以解决问题。
每个估算器还有一个 get_depth()
方法,可用于通过更简短的语法检索相同的值:
>>> [estimator.get_depth() for estimator in forest.estimators_]
[9, 10, 9, 11, 9, 9, 11, 7, 13, 10]
为避免混淆,应注意每个估算器(而不是每个估算器的 tree_
)都有一个属性,称为 max depth
,其中 returns 参数的设置而不是比实际树的深度。 estimator.get_depth()
、estimator.tree_.max_depth
和 estimator.max_depth
如何相互关联在下面的示例中得到阐明:
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators=3, random_state=4, max_depth=6)
iris = load_iris()
clf.fit(iris['data'], iris['target'])
[(est.get_depth(), est.tree_.max_depth, est.max_depth) for est in clf.estimators_]
输出:
[(6, 6, 6), (3, 3, 6), (4, 4, 6)]
将最大深度设置为默认值 None
将允许第一棵树扩展到深度 7,输出将是:
[(7, 7, None), (3, 3, None), (4, 4, None)]
我正在使用 scikit-learn 创建随机森林。但是,我想找到每棵树的个体深度。这似乎是一个简单的属性,但根据文档,(http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html) 没有办法访问它。
如果这不可能,是否可以通过决策树模型访问树深度?
如有任何帮助,我们将不胜感激。谢谢。
RandomForestClassifier
的每个实例都有一个 estimators_
属性,它是 DecisionTreeClassifier
个实例的列表。文档显示 DecisionTreeClassifier
的一个实例有一个 tree_
属性,它是(我相信没有记录的)Tree
class 的一个实例。解释器中的一些探索表明每个 Tree
实例都有一个 max_depth
参数, 看起来 是您正在寻找的参数——同样,它没有记录。
无论如何,如果 forest
是 RandomForestClassifier
的实例,那么:
>>> [estimator.tree_.max_depth for estimator in forest.estimators_]
[9, 10, 9, 11, 9, 9, 11, 7, 13, 10]
应该可以解决问题。
每个估算器还有一个 get_depth()
方法,可用于通过更简短的语法检索相同的值:
>>> [estimator.get_depth() for estimator in forest.estimators_]
[9, 10, 9, 11, 9, 9, 11, 7, 13, 10]
为避免混淆,应注意每个估算器(而不是每个估算器的 tree_
)都有一个属性,称为 max depth
,其中 returns 参数的设置而不是比实际树的深度。 estimator.get_depth()
、estimator.tree_.max_depth
和 estimator.max_depth
如何相互关联在下面的示例中得到阐明:
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators=3, random_state=4, max_depth=6)
iris = load_iris()
clf.fit(iris['data'], iris['target'])
[(est.get_depth(), est.tree_.max_depth, est.max_depth) for est in clf.estimators_]
输出:
[(6, 6, 6), (3, 3, 6), (4, 4, 6)]
将最大深度设置为默认值 None
将允许第一棵树扩展到深度 7,输出将是:
[(7, 7, None), (3, 3, None), (4, 4, None)]