向决策树添加正确的标签

Adding correct labels to decision trees

我在机器学习项目中使用随机森林回归器。为了更好地理解预测的逻辑,我想可视化一些决策树并检查何时使用了哪些特征。

为此,我编写了以下代码:

from sklearn.tree import export_graphviz
from subprocess import call
from IPython.display import Image

# Select one estimator from the Random Forests
estimator = best_estimators_regr['RandomForestRegressor'][0].estimators_[0]

export_graphviz(estimator, out_file=path+'tree.dot', 
           rounded=True, proportion=False, 
           precision=2, filled=True)
call(['dot', '-Tpng', path+'tree.dot', '-o', path+'tree.png', '-Gdpi=600'])
Image(filename=path+'tree.png')

问题是我在训练模型的时候使用了max_features参数,所以我不知道每棵树用了哪些特征。因此,在绘制树时,我只得到 X[some_number]。这个数字是否对应于原始数据集中的列?如果不是,我如何告诉它使用列的名称而不是数字?

RandomForestClassifier中的'max_features'参数用于获取一次特征的个数,从而找到最佳分割。该参数被传递给所有单独的估计器 (DecisionTreeClassifier)。基础 DecisionTreeClassifier 对象都接受整个数据(其中样本是从训练数据中采样的,但所有列特征都传递给每棵树)。特征排序由单个 DecisionTreeClassifier 对象决定。所以不用担心。

您可以只使用 export_graphviz 中的 feature_names 参数来为您的所有功能传递每个功能的名称。